2013-07-10 59 views
6

我知道這可能是一個重複的,具有諷刺意味的是,在我開始閱讀這裏和那裏之前,我想我知道它是什麼(無論說什麼,但我仍然會說,請糾正我,我錯了) :
它免除了程序員必須使用transaction.begin()和commit()。如果你有一種方法調用兩個DAO方法,通常每個方法都有一個包含真實操作的transaction.begintransaction.commit,並調用它們,它會導致兩個事務(如果以前的dao方法應該回滾也可能會出現回滾問題)。但是如果你在你的方法上使用@transactional,那麼這些DAO調用將被包裝在一個單獨的週期中begin() - commit()週期。當然,如果您使用@transactional,則DAO不得使用我認爲的begin()commit()方法。@Transactional做什麼?

+1

你是對的這是重複的http://stackoverflow.com/questions/1099025/spring-transactional-what-happens-in-background – robotoaster

+1

有一件事想補充的是,如果你添加一些代碼,如提交或在你的方法中開始programmaticlly,它會工作。事務只會將您的數據庫連接更改爲不自動提交。 – OQJF

回答