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