Spring 2.5,Hibernate。如何給spring的事務管理器添加深度
我們的應用程序被構建爲具有服務層和管理器層。服務層提供所有隻讀服務並向UI傳遞結果。對於需要更改數據庫的服務,服務層執行所有初始只讀函數,然後調用管理器層。
我們已經建立了一個圍繞我們的管理層的事務建議,以捕獲來自管理層的所有異常並回滾這些事務。這在大部分情況下工作得很好。
問題出在我們有一位經理打電話給另一位經理來執行某些功能的情況。此功能會引發異常,這是從UI調用時的一個真正異常,但在客戶機管理器內部處理並返回成功的結果。事務管理器發現拋出了異常並且無論如何回滾事務,即使異常處理成功。
這是導致我們悲傷的交易屬性。
<tx:method name="*" propagation="REQUIRED" rollback-for="Throwable" no-rollback-for="OverridableException"/>
有沒有一種方法可以指定深度?我想說,只在最高管理器層調用中回滾異常,而不是在同一事務中的後續調用中的異常。
謝謝!
的問題是不會解決這個問題。我還是希望我的經理叫其他人來隱藏它的關係,並封裝功能。第二個調用仍然會產生回滾。 感謝REQUIRES_NEW。我將需要與我們的團隊討論這個問題,並確保它適合我。我對創建一個獨立事務感到擔憂。 – Thom
我可能會對根目錄感到困惑你需要解決的問題是嵌套管理器調用引發的異常,這個異常是否會離開外部管理器?它是否被外部管理器或內部管理器捕獲? –
引發內部經理,由外部經理抓住並處理。 – Thom