Spring 如何整合LiquiBase+;弹簧&x2B;在不使用Hibernate.xml配置文件的情况下休眠

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

我已经读了很多关于LiquiBase、Spring和Hibernate之间集成的帖子,但没有一篇适用于我的情况:

我正在启动一个使用Spring和Hibernate的新项目,因此我正在寻找一种在项目生命周期内管理数据库更改的方法。首先,我开始使用hbm2ddl,但后来意识到人们说这在生产环境中不是一个很好的主意,所以我得出结论,LiquiBase是一种可行的方法(我认为是这样)

问题是我没有使用hibernate.xml配置文件(我在LiquiBase中找到的所有示例都使用hibernate.xml),因为我在POJO/DB类中使用java注释,我的hibernate配置是这样做的

@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,它们的具体问题是什么?到底什么失败了?