質問

アプリケーションの起動/停止時にjpaで作成されたテーブルを埋める最良の方法は何ですか? 似ていますが、データ定義言語ではなくデータ操作言語を使用します。 永続化プロバイダーとしてHibernatePersistenceを使用しています。

役に立ちましたか?

解決 2

デフォルトパッケージのimport.sqlで解決し、「作成」を選択します。 hibernate.hbm2ddl.autoの値として。 Hibernateはもサポートしています。 hibernate.hbm2ddl.import_files プロパティ。

他のヒント

スプリングも使用している場合は、この回答は機能します。

Springを使用していない場合は、DDLコードを手動で実行する必要があります。 Hibernateにはデータベースの変更に対するサポートが制限されていることに注意してください(基本的にはテーブルのみを作成できます)。したがって、他に何かが必要な場合は、カスタムSQLを使用する必要があります。

[編集] Springを使用しない場合は、Hibernate Session にアクセスする方法を見つけます。任意のSQLを実行できる doWork()メソッドを呼び出します。

別のアプローチは、ドメインオブジェクトを作成して保持することです。ただし、生成されたオブジェクトのIDをこの方法で固定し、JPAインターフェースを使用してより複雑な他のことを行うことができるため、最初のアプローチが好まれます。

大量の insert ステートメントを記述したくない場合は、データをDBに挿入し、 insert を作成できるSquirrelSQLなどのSQLツールでエクスポートします。 >あなたのための声明。それらを追加のファイルに入れ、起動時にファイルを読み取り、; で分割して、各ピースを実行します。

外部キーを手動で処理し、コードでこれらのステートメントをリファクタリングする必要があるため、低レベルのsql insertステートメントでテーブルを埋めることは最良の選択肢ではないと思います。

既にオブジェクトモデルとORMを持っているので、もう1つのよりポータブルなソリューションは、オブジェクトで初期化データを定義し、JPAプロバイダーにそれらを永続化させることです。このソリューションは面倒に思えるかもしれませんが、 this のようなプロジェクトを使用すると、より妥当なものになります。

テストの目的で、私はorg.codehaus.groovy.mavenの単純なgroovyスクリプトとgmaven-pluginを使用することにしました。 gmaven-pluginはgroovyスクリプトを実行し、スクリプトはgenerate-test-resources mavenライフサイクル中にimport.sqlを作成します。スクリプトでループとカウンターを使用することは、挿入ステートメントで満たされたファイルを手動で入力するよりもはるかに優れています。もちろん、これにはhbm2ddlのものをソートしておく必要があります。これは、以前の更新と回答から既にわかっているように見えるためです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top