亚博体育yb9461分析DAO持久化的意思。
2.1.事务
在一个事务方法中,调用了其他事务的方法,此时事务该如何传递,按照什么规则传播.
1.1事务传播规则情况一:需要遵从当前事务
REQUIRED: 必须存在一个事务,如果当前存在一个事务,则加入到该事务中,否则,新建一个事务;(使用比较多)
SUPPORTS: 支持当前事务。如果当前存在事务,则使用该事务否则以非事务形式运行;
MANDATORY: 必须要存在事务,如果当存在事务,就使用该事务,否则,抛出异常;
1.2事务传播规则情况二:不遵从当前事务
REQUIRES_NEW:不管当前是否存在事务,都会新开启一个事务 必须是一个新的事务;(使用的比较多)
NOT_SUPPORTED: 以非事务方式执行,如果当前存在事务,把当前事务暂停;
NEVER :不支持事务,如果当前存在事务,抛出一个异常;
1.3事务传播规则情况三:寄生事务(外部事务/内部事务/嵌套事务)
HESTED:寄生事务,如果当前存在事务,则在内部事务内执行;如果当前不存在事务则创建一个新的事务;
寄生事务可以通过数据库savePoint (保存点)来实现,寄生事务可以回滚的,但是他的回滚不影响外部事务.但是外部事务的回滚会影响寄生事务.
1.4<tx:method/>元素的属性(要被增强的方法)
name:事务管理的方法名称,支持使用通配符方式:*匹配方法的模式
propagation:事务的传播规则,默认REQUIRED
isolation:事务的隔离级别,默认DEFAULT跟随数据表
timeout:事务超时时间,默认跟随数据库
read-only:是否是只读事务,针对查询操作
rollback-for:遇到什么类型的异常做事务回滚,默认java.lang.RuntimeException
no- rol lback-for:遇到什么类型的异常不回滚
2.事务的配置
基于xml:配置增强的方式、配置增强的一些设置以及对应的Joinpoint、配置切面增强和切入点Pointcut;
基于注解:配置@Transactional(该注解可以贴在类/方法上)在service类上,配置tx注解解析器和事务管理实际类(IOC和DI的注解解析器也得配置);
原文地址:https://blog.51cto.com/14654265/2462671