Spring 如何整合LiquiBase+;弹簧&x2B;在不使用Hibernate.xml配置文件的情况下休眠
我已经读了很多关于LiquiBase、Spring和Hibernate之间集成的帖子,但没有一篇适用于我的情况: 我正在启动一个使用Spring和Hibernate的新项目,因此我正在寻找一种在项目生命周期内管理数据库更改的方法。首先,我开始使用hbm2ddl,但后来意识到人们说这在生产环境中不是一个很好的主意,所以我得出结论,LiquiBase是一种可行的方法(我认为是这样) 问题是我没有使用hibernate.xml配置文件(我在LiquiBase中找到的所有示例都使用hibernate.xml),因为我在POJO/DB类中使用java注释,我的hibernate配置是这样做的Spring 如何整合LiquiBase+;弹簧&x2B;在不使用Hibernate.xml配置文件的情况下休眠,spring,hibernate,ant,annotations,liquibase,Spring,Hibernate,Ant,Annotations,Liquibase,我已经读了很多关于LiquiBase、Spring和Hibernate之间集成的帖子,但没有一篇适用于我的情况: 我正在启动一个使用Spring和Hibernate的新项目,因此我正在寻找一种在项目生命周期内管理数据库更改的方法。首先,我开始使用hbm2ddl,但后来意识到人们说这在生产环境中不是一个很好的主意,所以我得出结论,LiquiBase是一种可行的方法(我认为是这样) 问题是我没有使用hibernate.xml配置文件(我在LiquiBase中找到的所有示例都使用hibernate.x
@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版(当前版本)中可用,我想知道这是否已经实现了。如果是这样,我如何在ANT脚本中使用它
我需要创建原始数据库DDL和以下数据库更改日志,并将它们导入到生产数据库中
编辑:我正在使用:
液化酶2.0.5
液化酶冬眠2.0.0
Hibernate 4.1.4
春季3.1.1
Spring Data JPA 1.1.1你看了吗
它提到了dataSource,没有提到hibernate.xml
对于初始生成,您可以使用命令行模式和generateChangeLog
看
下面是您需要的一个最小的hibernate.xfg.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="entityManagerFactoryBean">
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3307/test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
</session-factory>
</hibernate-configuration>
com.mysql.jdbc.Driver
jdbc:mysql://127.0.0.1:3307/test
根
123456
org.hibernate.dialogue.mysql5innodbdialogue
是的,我已经看过这两个示例,但我的问题是要传递什么参数,因为我希望LiquiBase从我的POJO/DB注释类而不是从我的DB.Ok中检索DB更改。现在我明白了。看看这是完全的答案。您只需要虚拟hibernate.cfg.xml。虚拟hibernate.cfg.xml是什么意思?以下是我的文件:hibernate.cfg.xml-ANT-ApplicationContext.java,它们的具体问题是什么?到底什么失败了?