Как интегрировать LiquiBase + Spring + Hibernate без использования hibernate.xml-файл конфигурации
Я уже прочитал много постов, касающихся интеграции между LiquiBase, Spring и Hibernate, но ни один из них не относится к моей ситуации witch is:
Я начинаю новый проект, который использует Spring и Hibernate, поэтому я искал способ управлять изменениями базы данных в течение срока действия проекта. Сначала я начал использовать hbm2ddl, но потом понял, что люди говорят, что это не очень хорошая идея в производственных средах, поэтому я пришел к выводу, что LiquiBase - это путь (так что Я думаю).
Проблема в том, что я не использую спящий режим.XML config file (и все примеры, которые я нашел с помощью LiquiBase, используют hibernate.xml), так как я использую аннотации java в моих классах POJO / DB, и моя конфигурация 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-летней давности, в которых говорилось, что эта опция будет доступна только в версии 2.0 (текущей), и мне было интересно, реализована ли она уже. Если да,то как я могу использовать его в сценарии ANT?
I необходимо создать исходную базу данных DDL и следующие журналы изменений базы данных и импортировать их в производственную базу данных.
EDIT: я использую:
Liquibase 2.0.5
Liquibase Hibernate 2.0.0
Гибернация 4.1.4
Пружина 3.1.1
Весенние данные JPA 1.1.1
1 ответ:
Вы смотрели на http://www.liquibase.org/documentation/spring.html ?
Он упоминает источник данных и не спящий режим.XML.
Для начальной генерации можно использовать режим командной строки и
generateChangeLog
.См. http://www.liquibase.org/documentation/command_line.html .
Вот минимальный
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>