hibernate または任意の JPA 実装にスキームを作成するように指示できます。問題は、テーブルにデフォルトの初期レコードを入力したい場合はどうするかということです。
解決策として、アプリケーションの起動時にテーブルが空かどうかを確認してからレコードを作成できますが、スキームの作成後に呼び出されるリスナーがあれば、より適切だと思います。
hibernate または任意の JPA 実装にスキームを作成するように指示できます。問題は、テーブルにデフォルトの初期レコードを入力したい場合はどうするかということです。
解決策として、アプリケーションの起動時にテーブルが空かどうかを確認してからレコードを作成できますが、スキームの作成後に呼び出されるリスナーがあれば、より適切だと思います。
Hibernate を使用している場合はimport.sql
、初期データを使用して (たとえば src/main/resources に) ファイルを作成できます。アプリケーションの起動時に、Hibernate がファイルを取得して実行します。
DBUnitやArquillian persistence extensionなどの特殊なツールを使用して、DB を事前に入力 (および空にする) することもできます。
元の質問については、知る限り、JPA のエンティティ ライフサイクル イベントにしかアクセスできません。理論的には、テーブルの内容をチェックまたは変更するために使用できますが、これは悪い考えです。
編集 : DB シード用のアクセス可能な JPA 標準はありません。Pro JPA 2 の本でさえ、JDBC セットアップでシードすることを勧めています。前述のツールを使用したほうがよいと思います。Hibernate のような EclipseLink のシード支援については知りませんが、同様の回避策に関する DIY のアドバイスimport.sql
がいくつかあります。お役に立てば幸いです。
TopLinkでは、永続性ユニットの起動時に SessionEventListener を使用してイベントを受信できます。
永続ユニット プロパティ「eclipselink.session-event-listener」を使用して SessionEventListener を設定できます。postLogin イベントを使用して、テーブルにデータを入力したり、独自の DDL を実行したりできます。
http://www.eclipse.org/eclipselink/api/2.4/org/eclipse/persistence/sessions/SessionEventAdapter.htmlを参照して ください。