java如何在运行时创建JPA持久性单元
是否可以在运行时动态创建jpa持久性单元,而不必在持久性中定义它。xml
我有一个用例,我为不同的客户使用一个应用程序实例,对于每个客户,我设置一个新数据库,我需要设置一个新客户,而不是重新部署应用程序,这就是为什么我需要在运行时而不是在持久性中设置持久性单元。xml
我使用seam2和jsf1。2、冬眠3
有什么提示吗
你可以在下面搜索框中键入要查询的问题!
是否可以在运行时动态创建jpa持久性单元,而不必在持久性中定义它。xml
我有一个用例,我为不同的客户使用一个应用程序实例,对于每个客户,我设置一个新数据库,我需要设置一个新客户,而不是重新部署应用程序,这就是为什么我需要在运行时而不是在持久性中设置持久性单元。xml
我使用seam2和jsf1。2、冬眠3
有什么提示吗
# 1 楼答案
似乎您知道在部署之前使用哪个
persistence unit
。如果是这样的话,那么在运行时创建PU之后,您就不是真的这样了。我想你有两个选择${PUNAME}
使用占位符,然后在属性文件中根据您的客户机设置占位符。如果您使用的是maven,那么可以在开发和打包期间使用maven概要文件来填充这些属性李>persistence unit
,例如persistenceunit_cient1.xml
和persistenceunit_cient2.xml
,让系统根据客户端区域设置选择一个。是的,您必须调整区域设置李>好的。。只是澄清我所理解的。您有一个正在运行的应用程序,其中一些客户端可以来注册,一旦注册,他们将拥有自己的数据库。我让我的想象力在这里有点疯狂:)但似乎是这样。您可以做的是使用连接url、密码等和Relad会话工厂更改\更新属性文件
这个问题可以帮助您在运行时更新属性文件java update properties file run time
这个问题{a2}和{a3}提供了如何在运行时重新加载会话工厂的信息
# 2 楼答案
不是JPA规范的一部分。一些JPA实现允许某种方式,例如我们在DataNucleus JPA中允许的方式请参见本文档的结尾http://www.datanucleus.org/products/accessplatform_3_0/jpa/persistence_unit.html 请查阅JPA提供商的文档,看看是否有