4

hibernate または任意の JPA 実装にスキームを作成するように指示できます。問題は、テーブルにデフォルトの初期レコードを入力したい場合はどうするかということです。

解決策として、アプリケーションの起動時にテーブルが空かどうかを確認してからレコードを作成できますが、スキームの作成後に呼び出されるリスナーがあれば、より適切だと思います。

4

2 に答える 2

4

Hibernate を使用している場合はimport.sql、初期データを使用して (たとえば src/main/resources に) ファイルを作成できます。アプリケーションの起動時に、Hibernate がファイルを取得して実行します。

DBUnitArquillian persistence extensionなどの特殊なツールを使用して、DB を事前に入力 (および空にする) することもできます。

元の質問については、知る限り、JPA のエンティティ ライフサイクル イベントにしかアクセスできません。理論的には、テーブルの内容をチェックまたは変更するために使用できますが、これは悪い考えです。

編集 : DB シード用のアクセス可能な JPA 標準はありません。Pro JPA 2 の本でさえ、JDBC セットアップでシードすることを勧めています。前述のツールを使用したほうがよいと思います。Hibernate のような EclipseLink のシード支援については知りませんが、同様の回避策に関する DIY のアドバイスimport.sqlがいくつかあります。お役に立てば幸いです。

于 2012-09-11T10:38:17.420 に答える
1

TopLinkでは、永続性ユニットの起動時に SessionEventListener を使用してイベントを受信できます。

永続ユニット プロパティ「eclipselink.session-event-listener」を使用して SessionEventListener を設定できます。postLogin イベントを使用して、テーブルにデータを入力したり、独自の DDL を実行したりできます。

http://www.eclipse.org/eclipselink/api/2.4/org/eclipse/persistence/sessions/SessionEventAdapter.htmlを参照して ください。

于 2012-09-26T13:14:02.430 に答える