gpt4 book ai didi

java - 不同的 JPA 持久性单元 (/EAR/EJB) 对同一 DB 上的同一实体进行 CRUD : anyone?

转载 作者:行者123 更新时间:2023-12-01 12:31:36 27 4
gpt4 key购买 nike

我有一个企业 Web 应用程序,我们称之为 AppOne,包含多个 WAR 和一个 EJB,它使用 JPA 2 对一组实体执行 CRUD 操作。

现在我需要构建另一个企业 Web 应用程序,我们称之为 AppTwo,具有类似的结构(EAR 包含 n WARS + EJB),需要共享 AppOne 相同的实体和数据库。

AppOne 和 AppTwo 将驻留在同一应用程序服务器上。

我使用 JBoss 7、Hibernate 4 作为 JPA 2 提供程序,我的实体会自动扫描。

我的 persistence.xml 非常小:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="FoobarService" transaction-type="JTA">
<jta-data-source>java:jboss/datasources/foobarDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
<property name="hibernate.show_sql" value="true" />
<property name="format_sql" value="true" />
<property name="use_sql_comments" value="true" />
<!-- when using type="yes_no" for booleans, the line below allows booleans in HQL expressions: -->
<property name="hibernate.query.substitutions" value="true 'Y', false 'N'"/>
</properties>
</persistence-unit>
</persistence>

我正在考虑将 AppOne 的 EJB 包含实体和相关 DAO 部分的部分“克隆”(阅读:复制和粘贴)到 AppTwo 的 EJB 中,但由于我从未使用 JPA 这样做过,所以我想知道这是否是可能/建议(或者哪些是替代方案,考虑到 AppOne 已经部署在生产中,所以我无法取出它的 EJB 使其成为共享的),特别是如果:

  1. AppOne 和 AppTwo 持久性单元可以共存吗? ( I've read of problems 但我不确定它们是否与此相关或者是否已同时解决)
  2. 交易将如何处理?我的意思是,如果来自两个不同 EJB 的两个不同 PU 尝试同时更新同一实体,会发生什么?
  3. 您能想到这种方法有什么问题吗?除了明显的冗余之外,这将迫使我在未来实体/数据库修改的情况下更新两次文件。

最佳答案

我从未尝试过,但我认为这应该不是什么(大)问题。

  1. 是的,它们可以共存。例如,如果每个部署都使用单独的类加载器。
  2. 来自每个应用程序的交易不会互相了解。这就像两个用户依次点击同一个按钮一样。
  3. 我个人认为没有任何问题。如果您的服务器配置奇怪,您将必须配置 JBoss to isolate每个应用程序。

关于java - 不同的 JPA 持久性单元 (/EAR/EJB) 对同一 DB 上的同一实体进行 CRUD : anyone?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25891221/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com