天温习spring的事务处理机制,总结如下
事务管理器实现(org.springframework.*) | 使用时机 |
jdbc.datasource.DataSourceTransactionManager | 使用jdbc的抽象以及ibatis支持 |
orm.hibernate.HibernateTransactionManager | 使用hibernate支持(默认3.0以下版本) |
orm.hibernate3.HibernateTransactionManager | 使用hibernate3支持 |
transaction.jta.JtaTransactionManager | 使用分布式事务(分布式数据库支持) |
orm.jpa.JpaTransactionManager | 使用jpa做为持久化工具 |
orm.toplink.TopLinkTransactionManager | 使用TopLink持久化工具 |
orm.jdo.JdoTransactionManager | 使用Jdo持久化工具 |
jms.connection.JmsTransactionManager | 使用JMS 1.1+ |
jms.connection.JmsTransactionManager102 | 使用JMS 1.0.2 |
transaction.jta.OC4JJtaTransactionManager | 使用oracle的OC4J JEE容器 |
transaction.jta.WebLogicJtaTransactionManager | 在weblogic中使用分布式数据库 |
jca.cci.connection.CciLocalTransactionManager | 使用jrping对J2EE Connector Architecture (JCA)和Common Client Interface (CCI)的支持 |
UML结构图如下
4、各种事务管理器的定义如下
传播行为 | 含义 |
PROPAGATION_REQUIRED(XML文件中为REQUIRED) | 表示当前方法必须在一个具有事务的上下文中运行,如有客户端有事务在进行,那么被调用端将在该事务中运行,否则的话重新开启一个事务。(如果被调用端发生异常,那么调用端和被调用端事务都将回滚) |
PROPAGATION_SUPPORTS(XML文件中为SUPPORTS) | 表示当前方法不必需要具有一个事务上下文,但是如果有一个事务的话,它也可以在这个事务中运行 |
PROPAGATION_MANDATORY(XML文件中为MANDATORY) | 表示当前方法必须在一个事务中运行,如果没有事务,将抛出异常 |
PROPAGATION_NESTED(XML文件中为NESTED) | 表示如果当前方法正有一个事务在运行中,则该方法应该运行在一个嵌套事务中,被嵌套的事务可以独立于被封装的事务中进行提交或者回滚。如果封装事务存在,并且外层事务抛出异常回滚,那么内层事务必须回滚,反之,内层事务并不影响外层事务。如果封装事务不存在,则同PROPAGATION_REQUIRED的一样 |
PROPAGATION_NEVER(XML文件中为NEVER) | 表示当方法务不应该在一个事务中运行,如果存在一个事务,则抛出异常 |
PROPAGATION_REQUIRES_NEW(XML文件中为REQUIRES_NEW) | 表示当前方法必须运行在它自己的事务中。一个新的事务将启动,而且如果有一个现有的事务在运行的话,则这个方法将在运行期被挂起,直到新的事务提交或者回滚才恢复执行。 |
PROPAGATION_NOT_SUPPORTED(XML文件中为NOT_SUPPORTED) | 表示该方法不应该在一个事务中运行。如果有一个事务正在运行,他将在运行期被挂起,直到这个事务提交或者回滚才恢复执行 |
隔离级别 | 含义 |
ISOLATION_DEFAULT | 使用数据库默认的事务隔离级别 |
ISOLATION_READ_UNCOMMITTED | 允许读取尚未提交的修改,可能导致脏读、幻读和不可重复读 |
ISOLATION_READ_COMMITTED | 允许从已经提交的事务读取,可防止脏读、但幻读,不可重复读仍然有可能发生 |
ISOLATION_REPEATABLE_READ | 对相同字段的多次读取的结果是一致的,除非数据被当前事务自生修改。可防止脏读和不可重复读,但幻读仍有可能发生 |
ISOLATION_SERIALIZABLE | 完全服从ACID隔离原则,确保不发生脏读、不可重复读、和幻读,但执行效率最低。 |
今天对spring事务7中传播机制之间的作用进行了一个回顾,这里只涉及了jdbc事务管理器的特性,可能会有各种疏忽,希望各位读者拍砖。
原文:http://www.cnblogs.com/cxxjohnson/p/4923792.html