0

デプロイ後に初期化したい組み込みデータベース (HSQLDB) を備えた Spring MVC アプリがあります。xml スクリプトを使用してデータソースの初期データを定義できることはわかっていますが、JPA + Hibernate を使用している限り、Java コードを使用したいと考えています。これを行う方法はありますか?

4

1 に答える 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 に答える