我有一個具有propagation = Propagation.REQUIRES_NEW
事務屬性的方法:Spring的事務:回滾事務
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void createUser(final UserBean userBean) {
//Some logic here that requires modification in DB
}
這種方法可以同時調用多次,並且對每一項交易如果不是發生錯誤它回滾(獨立於其他交易)。
問題是這可能會強制Spring創建多個事務,即使另一個可用,並且可能會導致一些性能問題。
的propagation = Propagation.REQUIRED
Java的醫生說:Support a current transaction, create a new one if none exists.
這似乎解決了性能問題,不是嗎?
回滾問題呢?如果在使用現有事務時新方法調用回滾會怎麼樣?即使是以前的調用,是不是會回滾整個事務?
[編輯] 我想我的問題是不夠清楚:
我們有數百個連接到我們的服務器的客戶端。
對於每個客戶端,我們自然需要發送有關事務的反饋(確定或異常 - >回滾)。
我的問題是:如果我使用REQUIRED
,意思只有一個事務時,如果客戶端100遇到問題第一客戶端的事務將回退呢?
還有點兒REQUIRES_NEW點,創造新的交易每個方法被調用的時間。是的,如果你有REQUIRED並且事務回滾了,它會回滾整個事情。 –
@DenisTulskiy整個事情是每一個以前的調用,或當前的調用堆棧? –
@jidma:整個交易,見@尤金的答案,如果'createUser'是您的客戶端代碼調用的第一個方法,然後REQUIRES_NEW和要求的是同一個東西 –