嗯,我可能在這個問題上可能是錯誤的,但我需要你的寶貴意見/建議站在正確的道路上。春季交易管理計劃 - AOP和@Transactional
我想知道好,更好和最好的方式來處理Spring
+ Hibernate
事務管理,並且每個Spring
+ JDBCTemplate
和利弊。
一些方案/方法,我知道這樣做是:
1)@Around
Spring事務管理使用AOP註解(@Aspect
,@PointCut
與建議像@Before
,@After
等)。
問題-1:我早先用Spring AOP做了一個Logging示例,但是我對於爲Transaction Management做同樣的事情沒有任何線索。交易開始,回滾和提交將在該方面的類與@Before
,@After
,@Around
建議?請爲此分享一些代碼示例/代碼片段。
問題 - 2:是否需要的Hibernate事務管理強烈,或沒有它也實現了這個方法呢?
2)Spring的事務管理器@Transactional
註釋:另一個涉及的Hibernate事務管理聲明式事務管理與@Transactional
註釋事務管理方案。
問題 - 3:一個方法使用@Transactional
註釋確保在方法體中所有的事務管理,但你將如何管理與這種方式在不同的實體多DAO運行在特定的方法中的回滾功能?假設你正在做3-4種不同的DAO操作(在不同的DAO方法中使用@Transactional),並且在第3個DAO操作中發生了一些異常,你將如何回滾。
請分享您的看法!
問候,
阿倫
爲什麼要重新發明輪子並嘗試實施自己的交易管理?所以imho選項1不是一個選項。要在事務中使用Spring,您需要一個「PlatformTransactionManager」實現來使用,這取決於您使用哪種持久性機制或者是否需要使用JTA。你的事務邊界應該是服務層而不是單個的dao方法(如果你使用後者,你將有多個事務而不是一個)。 – 2014-10-06 07:14:07
@M。Deinum:這是否意味着沒有像AOP註釋那樣的事務管理:'@之前'和'@之後'或者它不是以這種方式使用它們的正確選擇? – 2014-10-06 07:35:33
你最好的選擇確實是使用@Transactional註解的Spring Transaction Manager。如果您從另一個DAO調用DAO,這兩個事務都沒有問題,則整個事務是原子性的,並且所有調用都會回滾 – paul 2014-10-06 07:47:06