Spring 框架事務支援模型的優勢
傳統上,EE 應用開發人員有兩種事務管理選擇:全域性事務或區域性事務,兩者都有深刻的侷限性。接下來的兩節將回顧全域性事務和區域性事務管理,然後討論 Spring 框架的事務管理支援如何解決全域性和區域性事務模型的侷限性。
全域性事務
全域性事務允許您使用多個事務性資源,通常是關係資料庫和訊息佇列。應用伺服器透過 JTA 管理全域性事務,JTA 是一個繁瑣的 API(部分原因在於其異常模型)。此外,JTA `UserTransaction` 通常需要從 JNDI 獲取,這意味著要使用 JTA,您還需要使用 JNDI。全域性事務的使用限制了應用程式碼的任何潛在重用,因為 JTA 通常僅在應用伺服器環境中可用。
以前,使用全域性事務的首選方式是透過 EJB CMT(容器管理事務)。CMT 是一種宣告式事務管理形式(與程式設計式事務管理不同)。EJB CMT 消除了事務相關的 JNDI 查詢需求,儘管使用 EJB 本身也需要使用 JNDI。它消除了大部分但不是全部編寫 Java 程式碼來控制事務的需要。顯著的缺點是 CMT 繫結到 JTA 和應用伺服器環境。此外,只有當選擇在 EJB 中實現業務邏輯(或至少在事務性 EJB 外觀之後)時,它才可用。總的來說,EJB 的缺點非常大,因此這不是一個有吸引力的選擇,尤其是在宣告式事務管理存在引人注目的替代方案的情況下。