【发布时间】:2012-07-26 13:46:32
【问题描述】:
假设我有以下persistence.xml,其中连接url、用户和密码都是硬编码的。
以下内容适用于 Hibernate 3.2。对于 Hibernate 3.5 ++,我们必须将“hibernate.connection”更改为“javax.persistence”。但是让我问这个问题,不管文字是“hibernate.connection”还是“javax.persistence”。
<persistence-unit name="obamacare" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.archive.autodetection" value="class, hbm"/>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
<property name="hibernate.connection.url" value="blah blah blah"/>
<property name="hibernate.connection.username" value="careuser"/>
<property name="hibernate.connection.password" value="carepass"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
但是,我们需要动态设置 url、用户和密码。有一个提议的身份验证服务器,它提供 url、用户和密码。这样我们就不需要单独配置使用某种形式的 jdbc、hibernate 或 JPA 的无数 webapps。除了不想在可见文本文件上存储/管理密码的安全问题。
就 JPA 而言,如何动态设置这些 JPA 属性?我正在寻求两组答案:
对于独立于 JPA 供应商的解决方案(toplink、eclipselink、hibernate 等) - 是否有任何 JPA 功能可以让我动态设置这三个属性?
1234563 /p>
如果您还希望在 JNDI 上投入两美分/英镑/卢比以及如何使用它来替换 persistence.xml 属性的功能,我会很高兴。但是,这不是问题的优先级。
【问题讨论】:
-
您想要完成的大部分事情都可以使用 Spring 轻松完成。我使用 Spring 已经有几个星期了,我一点也不后悔切换。 Spring 看起来工作量很大,但实际上很容易。
标签: java hibernate jpa jpa-2.0