有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在运行时创建JPA持久性单元

是否可以在运行时动态创建jpa持久性单元,而不必在持久性中定义它。xml

我有一个用例,我为不同的客户使用一个应用程序实例,对于每个客户,我设置一个新数据库,我需要设置一个新客户,而不是重新部署应用程序,这就是为什么我需要在运行时而不是在持久性中设置持久性单元。xml

我使用seam2和jsf1。2、冬眠3

有什么提示吗


共 (2) 个答案

  1. # 1 楼答案

    似乎您知道在部署之前使用哪个persistence unit。如果是这样的话,那么在运行时创建PU之后,您就不是真的这样了。我想你有两个选择

    1. 您可以使用${PUNAME}使用占位符,然后在属性文件中根据您的客户机设置占位符。如果您使用的是maven,那么可以在开发和打包期间使用maven概要文件来填充这些属性
    2. 使用某种基于区域设置的系统,每个客户端都有不同的persistence unit,例如persistenceunit_cient1.xmlpersistenceunit_cient2.xml,让系统根据客户端区域设置选择一个。是的,您必须调整区域设置

    好的。。只是澄清我所理解的。您有一个正在运行的应用程序,其中一些客户端可以来注册,一旦注册,他们将拥有自己的数据库。我让我的想象力在这里有点疯狂:)但似乎是这样。您可以做的是使用连接url、密码等和Relad会话工厂更改\更新属性文件

    这个问题可以帮助您在运行时更新属性文件java update properties file run time

    这个问题{a2}和{a3}提供了如何在运行时重新加载会话工厂的信息