【发布时间】:2012-08-23 10:35:31
【问题描述】:
我已经阅读了很多关于 LiquiBase、Spring 和 Hibernate 之间集成的帖子,但没有一个适用于我的情况:
我正在开始一个使用 Spring 和 Hibernate 的新项目,因此我正在寻找一种在项目生命周期内管理数据库更改的方法。首先我开始使用 hbm2ddl,但后来意识到人们说这在生产环境中不是一个好主意,所以我得出结论 LiquiBase 是要走的路(所以我认为)。
问题是我没有使用 hibernate.xml 配置文件(我发现使用 LiquiBase 的所有示例都使用 hibernate.xml),因为我在我的 POJO/DB 类和我的 hibernate 中使用了 java 注释配置是这样的
@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 年前的帖子说此选项仅在 2.0 版(当前版本)中可用,我想知道这是否已经实现。如果是这样,我如何在 ANT 脚本中使用它?
我需要创建原始数据库DDL和以下数据库更改日志并将它们导入生产数据库。
编辑:我正在使用:
Liquibase 2.0.5
Liquibase Hibernate 2.0.0
休眠 4.1.4
春季 3.1.1
Spring Data JPA 1.1.1
【问题讨论】:
标签: spring hibernate ant annotations liquibase