是否可以在运行时动态创建一个jpa持久性单元,而不是在persistance.xml中定义它?
我有一个用例,我为不同的客户使用一个应用程序的实例,对于每个客户,我设置了一个新的数据库,我需要设置一个新的客户,以便重新部署应用程序,这就是为什么我nead在运行时而不是在persistence.xml中设置持久性单元
我使用seam2,jsf1.2,hibernate3
有关此的任何提示吗?
答案 0 :(得分:1)
不属于JPA规范。一些JPA实现允许一种方式,例如我们允许在DataNucleus JPA中看到此文档的末尾http://www.datanucleus.org/products/accessplatform_3_0/jpa/persistence_unit.html 请参阅JPA提供商的文档以了解它是否
答案 1 :(得分:1)
似乎你知道在部署之前要使用哪个persistence unit
。如果是这种情况,那么你并不是真的在运行时创建PU。我认为你有两个选择。
${PUNAME}
使用占位符,然后在属性文件中根据您的客户端设置它。如果您使用maven,您可以使用maven配置文件在开发和包装过程中填充这些属性。persistence unit
,例如persistenceunit_cient1.xml
和persistenceunit_cient2.xml
让系统根据客户端区域设置选择一个。是的,您必须调整Locale设置。好的......只是澄清了我的理解。您有一个运行应用程序,其中一些客户端可以来注册,一旦注册,他们将拥有自己的数据库。我已经让我的想象力在这里疯狂了:)但似乎是这样。你可以做的是更改\更新属性文件与连接URL,密码等和relaod会话工厂。
此问题可以帮助您在运行时更新属性文件java update properties file run time