簡體   English   中英

關於服務和@Transactional

[英]On services and @Transactional

如果我有一個連續調用三個其他服務類的服務類,並且每個子服務必須在某個時刻處理DAO對象,我該如何使包裝服務將它們全部包裝到一個事務中? 它會像使用@Transactional注釋包裝一樣簡單嗎? 如果DAO已經標記為@Transactional怎么辦?

Spring框架中的默認事務傳播是REQUIRED ,這意味着如果事務尚不存在或代碼加入現有事務,則創建事務:

支持當前事務,如果不存在則創建新事務。 類似於同名的EJB事務屬性。

這是事務注釋的默認設置。

這意味着如果在單個事務方法中包裝對三個事務方法的調用,它們將在單個事務中運行。 就像那樣。

也可以看看:

如果您將外部服務注釋為@Transactional並且您的DAO也是@Transactional並且由服務調用它們將默認加入外部事務,如您所希望的那樣。

這實際上是關於嵌套事務的問題(http://en.wikipedia.org/wiki/Nested_transaction)。 使用spring,(假設您使用的是版本3和注釋),REQUIRED是事務模式的默認值。 如果為服務方法設置此模型,則“包裝器”服務包裝的所有方法都將使用主機事務,這意味着它們將在同一事務中運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM