菜鸟对SSM框架的理解(五)

Spring的事务管理
事务原本是数据库中的概念,在Dao层。但是在一般的情况下,需要将事务提升到业务层,就是Service层。这样做是为了能够使用事务的特性来管理具体的业务。
在Spring中通常可以通过以下两种方式来实现对事务的管理:
1.使用Spring的事务注解管理事务:通过@Transactional注解方式,可将事务织入到相应public方法中,实现事务管理。
2.使用AspectJ的AOP配置管理事务:使用XML配置事务代理的方式的不足是,每个目标类都需要配置事务代理。当目标类较多,配置文件会变得非常臃肿。使用XML配置顾问方式可以自动为每个符合切入点表达式的类生成事务代理。
Spring事务管理API
Spring的事务管理,主要用到两个事务相关的接口。事务管理器是PlatformTransactionManager接口对象。其主要用于完成事务的提交、回滚,及获取事务的状态信息。

1.常用的两个实现类
PlatformTransactionManager接口有两个常用的实现类:
1)DataSourceTransactionManager:使用JDBC或MyBatis进行数据库操作时使用。
2)HibernateTransactionManager:使用Hibernate进行持久化数据时使用。
2.事务的回滚方式
Spring事务的默认回滚方式是:发生运行时异常或者error时回滚,发生编译异常时提交。不过,对于编译异常,程序员也可以手工设置其回滚方式。

事务定义接口
事务定义接口TransactionDefinition中定义了事务描述相关的三类常量:事务隔离级别、事务传播行为、事务默认超时时限,及对它们的操作。


1)定义了五个事务隔离级别常量
DEFAULT:采用DB默认的事务隔离级别。MySql的默认为REPEATABLE_READ; Oracle默认为READ_COMMITTED。
READ_UNCOMMITTED:读未提交。未解决任何并发问题。
READ_COMMITTED:读已提交。解决脏读,存在不可重复读与幻读。
REPEATABLE_READ:可重复读。解决脏读、不可重复读,存在幻读
SERIALIZABLE:串行化。不存在并发问题。
2)定义了七个事务传播行为常量
所谓事务传播行为是指,处于不同事务中的方法在相互调用时,执行期间事务的维护情况。如,A事务中的方法doSome()调用B事务中的方法doOther(),在调用执行期间事务的维护情况,就称为事务传播行为。事务传播行为是加在方法上的。
PROPAGATION_REQUIRED
PROPAGATION_REQUIRES_NEW
PROPAGATION_SUPPORTS
PROPAGATION_MANDATORY
PROPAGATION_NESTED
PROPAGATION_NEVER
PROPAGATION_NOT_SUPPORTED

暂无评论