我正在使用Spring 3和Hibernate 3.6開發Web應用程序。我對@Transactional
註釋和代碼結構有一些疑問。Hibernate,Spring,@Transactional - 用try/catch包圍?
- >當我使用@Transactional
(使用Spring進行事務管理)時,是否必須在調用它們時使用try/catch包含@Transactional
-annotated方法?
例如,當我得到一個方法加載,更改並返回一個對象,然後我從另一個類中調用它:是否必須用try/catch來包圍調用?也許出了什麼問題,沒有對象返回,數據庫連接失敗..我不知道。
到現在爲止,我認爲@Transactional
關心所有可能發生的異常,並在發生錯誤時回滾此事務中的每個操作。 但如果它發生,我必須以某種方式通知用戶。當我調用try-block中的transactional-method並且它被回滾時,catch塊被激活? 我可以告訴用戶「出錯了」。否則用戶可能不會被通知?或者是否足以檢查是否有返回的對象(if/else),那麼我不需要try/catch? 林新,我想聽聽其他結構如何代碼。謝謝:-)
你是否認真對待代碼示例?例外永遠不應該被吞噬像那樣。沒有機會檢測到異常並回滾事務,我希望你的意思是這樣的:'catch(SomeException exc){throw new IllegalStateException(exc);}' – 2011-03-21 14:39:29
@Sean這只是僞代碼,我希望他會除非,否則不會吞嚥異常他有充分的理由這樣做。 – 2011-03-21 14:43:57
這就是爲什麼我問,而不是downvoting。你應該清楚這樣的東西,有很多新手 – 2011-03-21 14:50:46