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