我正在使用Spring Framework 3.0.5和Hibernate Framework 3.6開發一個web應用程序,我有一些問題。我使用帶註釋的事務管理。 (@Transactional),我的DAO是用普通的Hibernate 3 API編寫的。使用Spring,Hibernate和mySQL進行事務管理,額外的問題(使用沒有事務的休眠..)
1)我怎樣才能注意到事務回滾? (我的意思是,我必須捕獲異常?或者或許檢查後,如果一切正常?周圍@用的try-catch事務的方法似乎並不像一個很好的事情對我來說)
2)它是正確的,當我捕獲異常時,使用@transactional進行事務管理不起作用(而不是回滾)? (當我用try-catch圍繞交易方法的調用時)
3)是否可以在不使用事務的情況下使用Hibernate?所以我可以使用Spring與Hibernate,但沒有事務管理?
4)如果在不使用事務的情況下不能使用Hibernate,這意味着我的數據庫管理系統必須始終支持事務引擎(如InnoDB)。我不能使用myISAM表與休眠呢?那會是hibernate的一大缺點呢!
謝謝:-)如果運行時異常是從與@Transactional註釋的方法拋出
謝謝!我只想了解爲什麼人們通常不關心交易是否回滾。例如,當用戶想要註冊並且它不起作用時,事務就會回滾。但由於我不會意識到這一點,我不會通知用戶。我不認爲這是一個好策略。按照您的建議,我將查看「TransactionAspectSupport.currentTransactionStatus()。isRollbackOnly()」。 Id還想知道爲什麼有一篇關於冬眠網頁的文章,它描述瞭如何在沒有事務的情況下訪問數據,如果無法在沒有事務的情況下使用休眠:-) – nano7 2011-04-14 14:42:42
這是我提到的文章。 http://community.jboss.org/wiki/Non-transactionaldataaccessandtheauto-commitmode也許我誤解了一些......?非常感謝! :-) – nano7 2011-04-14 14:43:21
@ nano7:如果沒有異常,那麼事務沒有回滾。如果存在異常,則事務將回滾並且異常將傳播,直到在表示層中處理異常,並且可以通知用戶。如果沒有異常,則無需測試回滾。 – 2011-04-14 16:28:51