【问题标题】:modifying the persistence.xml at runtime在运行时修改 persistence.xml
【发布时间】:2013-07-03 08:38:55
【问题描述】:


我在谷歌和各种论坛上搜索了我的问题的答案,但找不到解决方案。我目前正在尝试通过向文件添加持久性单元来在运行时修改 persistence.xml。
这个问题的解决方案总是“在创建 EntityManagerFactory(或 EntityManager)时传递属性映射”,但我需要将新的持久性单元保存在 persistence.xml 中,因为应用程序将有 100 个甚至更多的持久性单元,每个租户将注册到该服务,每个租户将拥有自己的数据库。我目前使用 EclipseLink 2.3.3 作为我的 JPA 实现,EJB 3.1 和 jboss 7.1.1.Final 作为我的应用程序服务器。
是否可以在运行时(即时)修改 persistence.xml?

【问题讨论】:

    标签: jpa eclipselink jboss7.x ejb-3.1


    【解决方案1】:

    persistence.xml 是一个已部署的工件,因此在运行时很难修改。我认为将属性映射传递给 createEntityManagerFactory 是您最好的解决方案,您对此有什么问题?

    您可能还想尝试使用 PersistenceProvider API,即采用 PersistenceUnitInfo 的 createContainerEntityManagerFactory()。

    另外,考虑使用 EclipseLink 的多租户支持,

    http://www.eclipse.org/eclipselink/documentation/2.5/solutions/multitenancy.htm

    【讨论】:

    • 感谢您的回答,我正在使用 createContainerEntityManagerFactory() 创建容器管理的 EntityManager,我的问题是我没有为租户创建的租户数量或数据库部署时间(我正在实现一个数据库策略)所以我需要在运行时创建持久化单元,并保存它以防服务器发生某些事情需要重新启动。
    猜你喜欢
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多