2012-04-11 8 views
0

Ich versuche, eine Anwendung Bootstrap zu erstellen, die alle Tabellen in der Anwendung fallen lassen, wenn sie existieren, und dann initialisieren sie mit frischen Daten.Spring Bootstrap Kontext zum Löschen von Tabellen, sollten sie existieren

Ich habe einen Spring Context erstellt, der den Datenquellenkontext lädt - allerdings weiß ich nicht, wie man die Initialisierung der Datenquelle überschreibt, so dass das Verhalten abhängig davon, wie die Datenquelle geladen wird, angepasst werden kann. Also .. mit Hibernate als meine JPA-Implementierung ..

Wenn die Datenquelle aus der Anwendung geladen wird - dann würde ich die Schemata wie zu aktualisieren:

<persistence-unit name="myDB" transaction-type="RESOURCE_LOCAL"> 
    <properties> 
     <property name="hibernate.hbm2ddl.auto" value="update"/> 
    </properties> 
</persistence-unit> 

Wenn die Datenquelle vom Bootstrap geladen wird - dann ich brauche dieses Verhalten irgendwie zu überlasten, so dass die Datenbank immer von Grund auf neu erstellt wird, bevor neue Daten geladen wird:

<persistence-unit name="myDB" transaction-type="RESOURCE_LOCAL"> 
    <properties> 
     <property name="hibernate.hbm2ddl.auto" value="create"/> 
    </properties> 
</persistence-unit> 

der Ansatz, den ich genommen haben nicht funktioniert, wie ich die Datenquelle laden würde unter Verwendung der ‚update‘ Setzen und dann den Tisch fallen lassen s wenn sie vorhanden sind, bevor Sie versuchen, neue Daten zu laden. Allerdings - die Tabellen existieren nicht mehr zum Schreiben von Daten!

Vielen Dank im Voraus

Simon

Antwort

0

Sie können JPA Eigenschaften von Spring-Konfiguration übergeben statt persistance.xml und Verwendung Platzhalter, der durch PlaceholderConfigurer (möglicherweise system Eigenschaften = „Override“) oder Federprofile konfiguriert werden können (seit 3.1) oder mit Maven Filterung:

<util:map id="jpaPropertyMap" key-type="java.lang.String" value-type="java.lang.Object"> 
    <entry key="hibernate.hbm2ddl.auto" value="${database.ddl.mode}" /> 
</util:map> 

<bean id="managementEntityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    p:dataSource-ref="dataSource" 
    p:jpaPropertyMap-ref="jpaPropertyMap" /> 
+0

Schön - danke – totalcruise