事务介绍
Spring框架为事务管理提供了一致的抽象,提供了以下好处:
- 跨越不同事物API
- 支持声明式事务
- 用于编程事务管理的API比JTA等复杂事务API更简单
- 与Spring数据访问抽象的完美集成
Spring解决了全局和本地事务的缺点,那什么是全局事务?什么是本地事务呢?
- 全局事务:能够处理多个事务资源,通常是关系数据库和消息队列。应用服务器通过JTA管理全局事务,该JTA是一个麻烦的API(部分是由于其异常模型)。此外,通常需要从JNDI派生JTA UserTransaction,这意味着您还需要使用JNDI才能使用JTA。显然,使用全局事务将限制应用程序代码的任何潜在重用,因为JTA通常仅在应用程序服务器环境中可用。
以前使用全局事务的首选方法是通过EJB CMT(容器管理的事务):CMT是声明性事务管理的一种形式(与程序化事务管理不同)。
EJB CMT消除了与事务相关的JNDI查找的需要,尽管当然使用EJB本身必须使用JNDI。
它消除了编写Java代码来控制事务的大部分(但不是全部)需求。
缺点是CMT与JTA和应用程序服务器环境相关联。而且,仅当选择在EJB中或至少在事务性EJB幕后实现业务逻辑时才可用。通常,EJB的缺点很大&#x