Spring面向切面(AOP)
一、Spring事务管理的核心接口
1.TransactionDefinition是事务定义,事务传播行为,事务隔离级别,事务超时,只读状态。
2.PlatformTransactionManager是平台事务管理,接口不直接管理事务,将事务的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务体现
3.TransactionStatus是事务状态,是处理事务提供简单的控制事务执行和查询事务状态的方法,在回滚或提交的时候需要应用对应的事务状态
二、事务属性
传播行为,当事务方法被另一个事务方法调用时,必须指定事务应该 如何传播
隔离规则,定义了一个事务可能受其他事务影响的程度,例:脏读,不可重复读幻读
回滚规则,默认情况下,事务只有遇到运行期异常时才会回滚,而在遇到检查型异常时不会回滚 。但是你可以声明事务在遇到特定的检查型异常时像遇到运行期异常那样回滚。同样,你还可以声明事务遇到特定的异常不回滚,即使这些异常是运行期异常。
事务超时,为了使应用程序很好地运行,事务不能运行太长的时间。因为事务可能涉及对后端数据库的锁定,所以长时间的事务会不必要的占用数据库资源。事务超时就是事务的一个定时器,在特定时间内事务如果没有执行完毕,那么就会自动回滚,而不是一直等待其结束。
只读,如果事务只对后端的数据库进行该操作,数据库可以利用事务的只读特性来进行一些特定的优化。通过将事务设置为只读
三、Spring编程式事务和声明事务
编程式事务处理:所谓编程式事务指的是通过编码方式实现事务,允许用户在代码中精确定义事务的边界
声明式事务处理:管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务
区别:编程式事务侵入到了业务代码里面,但是提供了更加详细的事务管理;而声明式事务由于基于AOP,所以既能起到事务管理的作用,又可以不影响业务代码的具体实现。

相关文章: