2012-08-23 5 views
8

ho già letto un sacco di posti per quanto riguarda l'integrazione tra LiquiBase, Primavera e Hibernate, ma nessuno di loro applico alla mia situazione strega è:Come integrare LiquiBase + molla + Hibernate senza l'utilizzo di file di configurazione hibernate.xml

I Sto iniziando un nuovo progetto che usa Spring e Hibernate, quindi stavo cercando un modo per gestire le modifiche al database durante la vita del progetto. Per prima cosa ho iniziato a usare hbm2ddl, ma poi mi sono reso conto che la gente dice che questa non è una buona idea negli ambienti di produzione, quindi sono giunto alla conclusione che LiquiBase era la strada da percorrere (quindi penso).

Il problema è che non sto usando un file di configurazione hibernate.xml (e tutti gli esempi che ho trovato usando LiquiBase usano un hibernate.xml), visto che sto usando le annotazioni java nelle mie classi POJO/DB e mio hibernate configurazione avviene in questo modo

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

ho trovato anche i messaggi di 2 anni fa, dicendo che questa opzione è disponibile solo nella versione 2.0 (quella attuale), e mi chiedevo se questo è già implementata. In tal caso, come posso usarlo in uno script ANT?

Devo creare il database DDL originale ei seguenti registri di modifica del database e importarli nel DB di produzione.

EDIT: sto usando:

Liquibase 2.0.5

Liquibase Hibernate 2.0.0

Hibernate 4.1.4

Primavera 3.1.1

Spring Data JPA 1.1.1

risposta

3

Hai guardato http://www.liquibase.org/documentation/spring.html?

Si menziona dataSource e no hibernate.xml.

Per la generazione iniziale è possibile utilizzare la modalità riga di comando e generateChangeLog.

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

Ecco un minimo hibernate.xfg.xml si sta andando ad avere bisogno:

<?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ì, ho già guardato entrambi questi esempi, ma il mio problema è quello che i parametri da passare esattamente, perché voglio LiquiBase per recuperare il DB cambia dalle mie classi annotate POJO/DB e non dal mio DB. –

+1

Ok. Ora ho la domanda. Guarda http://stackoverflow.com/questions/776787/hibernate-using-jpa-annotated-entities-and-liquibase. È una risposta completa. Avrai solo bisogno di dummy hibernate.cfg.xml. – Vadzim

+0

Cosa intendi con un dummy hibernate.cfg.xml? –

Problemi correlati