エンティティクラスがあり、休止状態でDBの対応するテーブルにいくつかの定数値を設定したい:いくつかのデータを含む複数の行(値がない場合、または置換...)休止状態にこれを行うように依頼するにはどうすればよいですか(理想的には注釈付き)?
私は休止状態 3.2 と春 3.1 を使用しています。
前もって感謝します!!!
エンティティクラスがあり、休止状態でDBの対応するテーブルにいくつかの定数値を設定したい:いくつかのデータを含む複数の行(値がない場合、または置換...)休止状態にこれを行うように依頼するにはどうすればよいですか(理想的には注釈付き)?
私は休止状態 3.2 と春 3.1 を使用しています。
前もって感謝します!!!
デフォルトでは、Hibernate はファイル「import.sql」(またはプロパティ hibernate.hbm2ddl.import_files で指定されたファイル) の内容をロードしようとします (そのようなファイルがクラスパスのルートに存在する場合)。したがって、「解決策」の 1 つは、値を 1 つだけ保持し、一意の制約を持つテーブルを作成することです。Hibernate がファイルをロードしようとすると、一意の制約が原因で 2 回目のロードに失敗します。私はこれをテストしていませんが、うまくいくはずです。
さて、それがあなたにとって悪いと思われる場合 (私にとってはそうです)、Hibernate がこのファイルをインポートするために使用するコードを確認することをお勧めします。
これを @Singleton @Startup EJB として、またはコンテキスト リスナーとして、または同様のものとして実装します。アイデアは、アプリが起動するたびに実行することです。その後、コードはデータベースが空かどうかをチェックし、必要に応じて SQL ファイルをインポートします。
いつテーブルにデータを入力しますか?
アプリケーションの起動時にデータベースの状態を確認し、Spring ContextLoaderListenerを使用してテーブルが空の場合はいくつかのテーブルにデータを入力します (次のようになります)。
public class ExampleContextLoaderListener extends ContextLoaderListener {
private static Log LOG = LogFactory.getLog("ContextLoaderListener");
public void contextInitialized(final ServletContextEvent event) {
super.contextInitialized(event);
final DBService dbService =
getCurrentWebApplicationContext().getBean(DBService.class);
if (!db.initalized()) {
LOG.info("DB empty ... adding new data");
// etc.
} else {
LOG.info("DB already initalized.")
}
}
}
テーブルが空かどうかをテストする方法も参照してください。