我一直在努力學習Spring和Hibernate,並且我在網絡中使用了很多示例來組合一個很好的應用程序。不過,我現在意識到Spring支持事務管理。在我的春季應用程序中,我只是簡單地撥打我想要的任何電話,直接進入休眠狀態。對於人們爲什麼要使用Spring的事務管理/數據庫,有什麼理由/好處嗎?使用彈簧事務管理與使用休眠模式的好處
14
A
回答
24
真正的優點是:
輕量級聲明語法。比較:
public void saveEmployee(Employee e) { Session s = sf.getCurrentSession(); s.getTransaction().begin(); s.save(e); s.getTransaction().commit(); }
和
@Transactional public void saveEmployee(Employee e) { sf.getCurrentSession().save(e); }
靈活的事務傳播。想象一下,現在你需要執行這個
saveEmployee()
方法作爲複雜事務的一部分。通過手動事務管理,您需要更改方法,因爲事務管理是硬編碼的。使用Spring - 您是否使用兩個階段提交到數據庫以及到別的地方@Transactional public void hireEmployee(Employee e) { dao.saveEmployee(e); doOtherStuffInTheSameTransaction(e); }
自動回滾異常
8
的spring's reference doc提到它很清楚
Spring框架提供了交易 管理 統一的抽象層,提供以下 好處:
- 爲不同的事務 一致的編程模型API如JTA,JDBC,Hibernate, JPA和JDO。
- 支持聲明式事務管理。
- 爲諸如JTA之類的複雜事務 API提供了用於編程事務管理的更簡單的API 。
- 非常適合Spring的各種數據訪問抽象。
爲不同的事務 API,例如JTA,JDBC,Hibernate的, JPA,JDO和一致的編程模型。
讓我們假設您目前正在使用hibernate api進行事務管理,並且隨時可能需要切換到JDO。這需要更改交易管理代碼。如果你使用Spring,那麼沒有改變。
支持聲明式事務管理。
到EJB
提供的編程式事務管理 一個簡單的API多了一些複雜的交易 API,例如JTA的相似。
JTA和JDBC有不同的API用於事務管理。 Spring通過提供統一的API來抽象出它。
+0
是的,但實際上我不確定這意味着什麼。在Spring上使用Spring的事務管理是否是標準做法?您是否錯過了以這種方式使用hibernate的一些好處? – 2011-02-09 02:58:18
相關問題
- 1. 休眠與彈簧
- 2. 休眠事務管理器
- 3. 使用休眠彈簧注入數據
- 4. 使用休眠和彈簧更新
- 5. 使用@Transactional彈簧3.x和休眠4.x事務管理問題使用@Transactional
- 6. 休眠與彈簧配置。
- 7. 休眠模式的事務重用
- 8. 休眠使用事務管理器的子類dao
- 9. 彈簧4 + JPA(休眠4)+ JTA事務管理器不刷新自動
- 10. 用`.createSQLQuery`截斷後彈簧/休眠不回滾事務
- 11. 事務管理器彈簧4冬眠4的NoSuchMethodError
- 12. 初始化sessionFactory使用彈簧與休眠
- 13. 使用maven依賴項集成彈簧與休眠
- 14. 兩個數據庫的彈簧批處理事務管理器
- 15. 休眠4與彈簧的兼容性
- 16. 如何在彈簧數據(使用休眠)中使用子圖?
- 17. 休眠事務處理管理器 - Java配置
- 18. 如何在休眠/彈簧的情況下使用共享鎖定模式?
- 19. HibernateInterceptor與彈簧3.1和休眠4.01
- 20. 併發與JPA,休眠和彈簧
- 21. 休眠事務超時 - 異常處理
- 22. 休眠+彈簧安全
- 23. 休眠,彈簧和外鍵
- 24. JSON分頁 - 休眠,彈簧
- 25. 休眠+彈簧autowire錯誤
- 26. 休眠jconsole彈簧配置
- 27. 休眠彈簧掛起
- 28. 休眠彈簧啓動
- 29. 休眠彈簧數據Jpa
- 30. 休眠驗證和彈簧控制器的一個事務
的情況:隨着春天,事務傳播工程進展順利。否則選擇你想使用的那個。 – 2011-02-09 03:11:15
如果我可能會問,什麼是兩階段提交? – 2011-02-10 04:16:22