2014-04-11 4 views
1

설치 과정에서 자바 속성을 제어하는 ​​방법을 찾고 있습니다.즉시 자바 속성을 어떻게 수정할 수 있습니까?

내 응용 프로그램에서 Spring Data JPA + Hibernate를 사용하고 있습니다. bean에 jpa 속성을 설정했습니다. 그리고 그것을 속성 파일로 옮깁니다.

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml"></property> 
    <property name="persistenceUnitName" value="hibernatePersistenceUnit"/> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> 
    </property> 
    <property name="jpaPropertyMap"> 
     <map> 
      <entry key="hibernate.hbm2ddl.auto" value="${hibernate.hbm2ddl}"/> 
      <entry key="hibernate.show_sql" value="${hibernate.show.sql}" /> 
      <entry key="hibernate.dialect" value="${hibernate.dialect}" /> 
     </map> 
    </property> 
</bean> 

속성 파일 : prop-local-override.properties 여기서 local은 환경 변수입니다.

hibernate.hbm2ddl=update 
#hibernate.dialect=org.hibernate.dialect.HSQLDialect 
hibernate.show.sql=true 

이렇게 모든 것이 정상적으로 작동합니다. 하지만 설치 과정에서 hibernate.hbm2ddl을 바꾸고 싶습니다. 내 응용 프로그램을 설치하기 위해 rpm 패키지를 사용합니다. 예를 들어 앱을 설치할 때이 속성을 '만들기'로 설정하려고합니다. 다시 시작할 때마다 업데이트로 돌아갑니다.

-Dhibernate.hbm2ddl = update가 정상적으로 작동합니다. 그러나 수동 작업입니다. Puppet과 같은 커다란 도구없이 자동으로 만드는 방법에 대한 아이디어가 있습니까?

감사합니다, Sergii K.

+0

무엇 '업데이트'에 문제가 있습니까? 스키마가 존재하지 않으면 스키마를 생성하고 스키마가 존재하면 스키마를 업데이트합니다. –

+0

사실 아무것도 잘못되었습니다. 내 데이터베이스에는 내가 사용하는 데이터가 들어 있습니다. 이 데이터는 자동으로 hibernate.hbm2ddl.import_files 속성에 삽입됩니다. 응용 프로그램을 설치할 때 해당 데이터를 데이터베이스에 저장하려고합니다. 그러나이 속성은 만들기 및 만들기 - 놓기 값에서만 작동합니다. 그래서 나는 그것을 동적으로 수정하고 싶다. 그리고 응용 프로그램을 설치할 때 "create"를 설정하고 다시 시작하거나 업데이트 할 때 "update"를 설정하십시오. 그게 전부 야. –

답변

0

동적 전에이 변경 시도,하지만 당신은 당신의 엔티티 관리자에서 해당 속성지도에 액세스 할 수 있습니다 마십시오 :.

entityManager.getEntityManagerFactory()의 getProperties()

+0

이 질문에 어떻게 대답합니까? – Prasad

+0

Spring이 여러 단계 (설치, 업데이트 또는 제거)를 이해할 수 있다는 점을 항상 생각해보십시오. rpm-maven-plugin에는 preinstallScriptlet 및 postinstallScriptlet이라는 대상이 포함되어 있습니다. 그러나 그는 내가 알고있는 것처럼 응용하에 통제 할 수 없다. –

관련 문제