簡體   English   中英

不同的JPA持久性單元(/ EARs / EJB)對同一DB上的相同實體進行CRUD:有人嗎?

[英]Different JPA Persistence Units (/ EARs / EJBs) CRUD-ing the same Entities on the same DB: anyone?

我有一個企業Web應用程序,我們稱之為AppOne,其中包含多個WAR和一個EJB,它使用JPA 2對一組實體執行CRUD操作。

現在,我需要構建另一個企業Web應用程序,將其稱為AppTwo,它具有類似的結構(包含n個WARS + EJB的EAR),需要共享相同的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>

我當時想將包含實體和相關DAO部分的AppOne EJB部分“克隆”(讀取:復制並粘貼)到AppTwo的EJB中,但是由於我從未使用JPA做到這一點,所以我想知道這是否可行/建議(或者是備選方案,考慮到AppOne已經部署在生產環境中,因此我無法采用其EJB使其成為共享的),特別是在以下情況下:

  1. AppOne和AppTwo持久性單元都能合並嗎? 我已經讀過問題,但是不確定是否與此有關或是否已解決)
  2. 交易將如何處理 我的意思是,如果來自兩個不同EJB的兩個不同的PU試圖同時更新同一實體,會發生什么?
  3. 您能想到這種方法有什么問題嗎? 除了明顯的冗余之外,如果將來要修改實體/數據庫,該冗余將迫使我將文件更新兩次。

我從未嘗試過,但我認為應該沒有什么大問題。

  1. 是的,它們可以共存。 例如,對於每個部署,是否使用單獨的ClassLoader。
  2. 來自每個應用程序的事務不會相互了解。 就像兩個用戶在同一按鈕上一個接一個單擊一樣。
  3. 我個人沒有發現任何問題。 如果服務器配置異常 ,則必須配置JBoss來隔離每個應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM