LiquiBase、Spring、Hibernate の統合に関する多くの投稿を既に読んでいますが、私の状況には当てはまらない魔女は次のとおりです。
Spring と Hibernate を使用する新しいプロジェクトを開始しているので、プロジェクトの存続期間中にデータベースの変更を管理する方法を検討していました。最初は hbm2ddl を使い始めましたが、本番環境ではこれはあまり良い考えではないと言う人がいることに気付き、LiquiBase を使うべきだという結論に達しました (そう思います)。
問題は、POJO/DB クラスで Java アノテーションを使用しており、休止状態の構成が作成されているため、hibernate.xml 構成ファイルを使用していないことです (LiquiBase を使用して見つけたすべての例は hibernate.xml を使用しています)。このような
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() throws ClassNotFoundException
{
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource());
entityManagerFactoryBean.setPackagesToScan(environment.getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN));
entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistence.class);
Properties jpaProterties = new Properties();
jpaProterties.put(PROPERTY_NAME_HIBERNATE_DIALECT, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DIALECT));
jpaProterties.put(PROPERTY_NAME_HIBERNATE_FORMAT_SQL, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_FORMAT_SQL));
jpaProterties.put(PROPERTY_NAME_HIBERNATE_NAMING_STRATEGY, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_NAMING_STRATEGY));
jpaProterties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL));
jpaProterties.put(PROPERTY_NAME_HIBERNATE_HBM2DDL_AUTO, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_HBM2DDL_AUTO));
entityManagerFactoryBean.setJpaProperties(jpaProterties);
return entityManagerFactoryBean;
}
また、このオプションはバージョン 2.0 (現在のバージョン) でのみ使用可能であるという 2 年前の投稿を見つけました。これが既に実装されているかどうか疑問に思っていました。もしそうなら、ANTスクリプトでどのように使用しますか?
元のデータベース DDL と次のデータベース変更ログを作成し、それらを本番 DB にインポートする必要があります。
編集:私は使用しています:
リキベース 2.0.5
Liquibase 休止状態 2.0.0
休止状態 4.1.4
春 3.1.1
春のデータ JPA 1.1.1