首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

EJB 3.0 Persistence Context 與 Seam Managed Persistence Context 深度對比

     編輯:Java 相關知識

EJB 3.0 兩種 Persistence Context

Transaction 型

生命週期與事務同步:事務開始時開啟,事務結束時關閉。適用於單一 Web 請求內完成的操作。

Extended 型

生命週期與 Stateful Session Bean (SFSB) 同步:從 SFSB 初始化到銷毀持續存在,跨越多個事務。事務外寫操作進入隊列,下一事務執行。解決跨請求操作中的 LazyInitializationException 與 NonUniqueObjectException。

Seam Managed Persistence Context (SMPC)

解決 EJB 無法處理的兩大問題

  1. 原子會話:希望整個跨請求操作作為單一事務。Seam 利用 Hibernate 擴展的 FlushModeType.MANUAL 手動控制 flush 時機,實現「原子對話」。
  2. 跨 SFSB 傳遞:業務需調用多個 SFSB。SMPC 在 components.xml 配置,透過 @In 注入 Seam 組件,實現 Persistence Context 在組件間透明傳遞。

與 EJB Extended 的關係

EJB 也可透過 @TransactionAttribute(NOT_SUPPORTED) + 最後方法 REQUIRED 實現類似原子會話。但 Seam 內部細節更豐富(如 jBPM 流程整合),Gavin King 團隊設計必有深意。

待探索問題

  • Seam 實現「原子對話」的內部機制細節
  • SMPC 在 jBPM 流程中跨組件傳遞的實際代碼範例

總結

Extended Persistence Context 解決跨請求實體管理;Seam Managed Persistence Context 進一步解決原子會話與跨組件傳遞,提供更強大的會話管理能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved