2012-08-23 17 views
8

ya leído un montón de mensajes relativos a la integración entre LiquiBase, Spring e Hibernate, pero ninguno de ellos pueden aplicarse a mi bruja situación es:Cómo integrar LiquiBase + Primavera + Hibernate sin necesidad de utilizar el archivo de configuración hibernate.xml

I Estoy comenzando un nuevo proyecto que usa Spring e Hibernate, así que estaba buscando una forma de administrar los cambios de la base de datos durante la vida del proyecto. Primero comencé a usar hbm2ddl pero luego me di cuenta de que la gente dice que esta no es una muy buena idea en entornos de producción, así que llegué a la conclusión de que LiquiBase era el camino a seguir (eso creo).

El problema es que no estoy usando un archivo de configuración hibernate.xml (y todos los ejemplos que encontré usando LiquiBase usan hibernate.xml), ya que estoy usando anotaciones Java en mis clases POJO/DB y mi configuración de hibernación se hizo así

@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; 
} 

también encontré mensajes de hace 2 años diciendo que esta opción sólo estaría disponible en la versión 2.0 (la actual), y me preguntaba si esto ya está implementado. Si es así, ¿cómo lo uso en un script ANT?

Necesito crear la base de datos original DDL y los siguientes registros de cambio de base de datos e importarlos al DB de producción.

EDIT: que estoy usando:

Liquibase 2.0.5

Liquibase Hibernate 2.0.0

Hibernate 4.1.4

primavera 3.1.1

Spring Data JPA 1.1.1

Respuesta

3

¿Has mirado http://www.liquibase.org/documentation/spring.html?

Menciona dataSource y no hibernate.xml.

Para la generación inicial puede usar el modo de línea de comando y generateChangeLog.

Ver http://www.liquibase.org/documentation/command_line.html.

Aquí hay un mínimo hibernate.xfg.xml que vas a necesitar:

<?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> 
+0

Sí, ya se veía en estos dos ejemplos, pero mi problema es lo que los parámetros a pasar exactamente, porque quiero LiquiBase para recuperar la DB cambia de mi POJO/DB clases anotadas y no de mi DB. –

+1

Ok. Ahora entiendo la pregunta. Mire http://stackoverflow.com/questions/776787/hibernate-using-jpa-annotated-entities-and-liquibase. Es una respuesta completa. Solo necesitarás el dummy hibernate.cfg.xml. – Vadzim

+0

¿Qué quiere decir con un dummy hibernate.cfg.xml? –

Cuestiones relacionadas