在Spring中集成Hibernate事務

發表于:2007-07-04來源:作者:點擊數: 標簽:
"""""" 本文試圖解釋如何使用Spring來集成組件(包括組件的事務關系)。在J2EE應用程序中,連接到單個存儲數據沒有什么困難。但是一旦要求集成企業級組件的時候,情況就復雜了。一個組件一般會受到一個或多個存儲數據的支持,因此當我們提到集成一個或多個組
""""""   本文試圖解釋如何使用Spring來集成組件(包括組件的事務關系)。在J2EE應用程序中,連接到單個存儲數據沒有什么困難。但是一旦要求集成企業級組件的時候,情況就復雜了。一個組件一般會受到一個或多個存儲數據的支持,因此當我們提到集成一個或多個組件的時候,我們就認為需要跨越多個組件、維護多個數據存儲中的原子操作。J2EE服務器為這些組件提供了一個容器,這個容器可以管理這些事務性原子操作和跨組件的隔離。如果我們沒有使用J2EE服務器,Spring可以幫助我們。Spring在集成組件服務和它們相關的事務關系的時候,是基于控制倒置(Inversion of Control)的。

  集成(Assembling)組件事務

  假設在我們的企業組件庫中,已經擁有了一個審計(audit)組件,客戶端可以調用它的服務方法。后來,當我們希望建立一個訂單處理系統的時候,我們發現了一個設計需求:OrderListManager組件服務也需要審計組件服務。OrderListManager建立和管理訂單,因此所有的OrderListManager服務都有自己的事務屬性。當我們在OrderListManager服務內部調用審計組件的時候,會把OrderListManager服務的事務關系(context)傳遞到審計服務中。也許在未來某個時候,某個新的業務服務組件也需要審計組件服務,但是該審計服務將會在一個完全不同的事務關系中被調用。其實際結果是,雖然審計組件的功能仍然沒有變化,但是它可以與其它的業務服務功能組合使用,使用混合和匹配(mix-and-match)的事務屬性來提供不同的運行時(run time)事務行為。

  圖1顯示了兩個相互獨立的調用關系流。在流1中,如果客戶端擁有TX關系,OrderListManager要么參與它,要么啟動一個新的TX,這依賴于Client是否在某個TX中,以及為OrderListManager方法提供了什么樣的TX屬性。OrderListManager服務接下來調用AuditManager方法的時候,這樣的解釋也是正確的。


圖1:集成組件事務""""""

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97