java - 如何即时修改 java 属性?

标签 java spring hibernate jpa properties

我正在寻找如何在安装过程中控制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.

最佳答案

以前从未尝试过动态更改此设置,但您可以从实体管理器访问该属性映射:

entityManager.getEntityManagerFactory().getProperties()

关于java - 如何即时修改 java 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23010131/

相关文章:

java - 如何使用 GSON/JSON 将字符串数组转换为对象?

java - 为什么Erlang中没有中间件?

database - 如何验证针对数据库的 Hibernate 映射

mysql - 如何在 hibernate 中使用 LIMIT 进行更新查询?

java - 如何在数据库中存储哈希密码?

java - 应用程序在插入查询 SQLite 时关闭

java - 如何抽象出不在数据结构上的二分搜索?

spring - 如何在 Kotlin 和 Spring 中使用 setter 注入(inject)?

java - Spring - 单例工厂实例化原型(prototype)作用域 bean

spring - JMS队列无负载时消费者数量不缩减