デプロイ後に初期化したい組み込みデータベース (HSQLDB) を備えた Spring MVC アプリがあります。xml スクリプトを使用してデータソースの初期データを定義できることはわかっていますが、JPA + Hibernate を使用している限り、Java コードを使用したいと考えています。これを行う方法はありますか?
質問する
639 次
1 に答える
1
大幅に更新された回答(以前は複雑すぎました):
必要なのは、初期化 Bean をコンテキストに追加することだけです。これにより、必要なすべてのデータがデータベースに挿入されます。
public class MockDataPopulator {
private static boolean populated = false;
@Autowired
private SessionFactory sessionFactory;
@PostConstruct
public void populateDatabase() {
// Prevent duplicate initialization as HSQL is also initialized only once. Duplicate executions
// can happen when the application context is reloaded - e.g. when running unit tests).
if (populated) {
return;
}
// Create new persistence session
Session session = sessionFactory.openSession();
session.setFlushMode(FlushMode.ALWAYS);
// Insert mock entities
session.merge(MockDataFactory.createMyFirstObject())
session.merge(MockDataFactory.createMySeconfObject())
// ...
// Flush and close
session.flush();
session.close();
// Set initialization flag
populated = true;
}
}
于 2013-07-07T20:11:27.140 に答える