2012-04-11 2 views
0

응용 프로그램의 모든 테이블을 삭제하고 새로운 데이터로 초기화하는 응용 프로그램 부트 스트랩을 만들려고합니다.테이블을 삭제하기위한 스프링 부트 스트랩 컨텍스트 테이블이 존재할 경우

데이터 소스 컨텍스트를로드하는 스프링 컨텍스트를 만들었지 만, 데이터 소스의 초기화에 따라 데이터 소스의 초기화를 재정의하는 방법을 알 수 없으므로 데이터 소스가로드되는 방식에 따라 동작을 사용자 정의 할 수 있습니다. 그래서 .. 데이터 소스는 응용 프로그램에서로드 된 경우

.. 내 JPA 구현으로 최대 절전 모드를 사용하여 - 그때 업데이트 할 스키마를 원하는 : 데이터 소스가 부트 스트랩에서로드

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

경우 - 다음 신선한 데이터가로드되기 전에 데이터베이스가 항상 처음부터 생성되도록 어떻게 든이 문제를 오버로드해야합니다

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

나는 내가 '갱신'을 사용하여 데이터 소스를로드하는 것처럼 작동하지 않습니다 복용 한 접근 테이블을 설정하고 놓습니다. 새로운 데이터를로드하려고 시도하기 전에 존재하는 경우. 그러나 - 데이터를 쓰는 테이블이 더 이상 존재하지 않습니다! 사전에

감사

사이먼

답변

0

당신은 JPA PlaceholderConfigurer 구성 할 수 있습니다 봄 구성 대신 persistance.xml 사용 자리에서 속성 (아마도 시스템 속성 = "OVERRIDE"), 또는 봄 프로파일을 전달할 수 있습니다 (3.1 이상) 또는 Maven 필터링 사용 :

<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

Beautiful - thank you – totalcruise