【发布时间】:2014-05-25 11:07:56
【问题描述】:
我正在寻找如何在安装过程中控制 Java 属性的方法。
我的应用程序中有 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 这样的大工具的情况下自动制作它?
谢谢, 塞尔吉·K。
【问题讨论】:
-
“更新”有什么问题?如果架构不存在,它会创建它,如果存在,它会更新它。
-
其实没有错。我的数据库包含我使用的数据。此数据会自动插入 hibernate.hbm2ddl.import_files 属性。当我安装我的应用程序时,我希望将这些数据保存在数据库中。但此属性仅适用于创建和创建删除值。所以,我想动态修改它。并在安装应用程序时设置“创建”,在我重新启动或更新它时设置“更新”。就是这样。
标签: java spring hibernate jpa properties