厦门建设局公维金网站,2018wordpress 主题,网络整合营销的优势,域名解析服务器ip地址1、事务管理
1.1、回滚方式
默认回滚方式#xff1a;发生运行异常时异常和error时回滚#xff0c;发生受查(编译#xff09;异常时提交。不过#xff0c;对于受查异常#xff0c;程序员也可以手工设置其回滚方式
1.2、事务定义接口
1.2.1、事务隔离级别常量
这些常量…1、事务管理
1.1、回滚方式
默认回滚方式发生运行异常时异常和error时回滚发生受查(编译异常时提交。不过对于受查异常程序员也可以手工设置其回滚方式
1.2、事务定义接口
1.2.1、事务隔离级别常量
这些常量是以ISOLATION_开头。即形如ISOLATON_XXX.
DEFAULT采用 DB 默认的事务隔离级别。MySql 的默认为 REPEATABLE_READ Oracle默认为 READ_COMMITTED。 READ_UNCOMMITTED读未提交。未解决任何并发问题。 READ_COMMITTED读已提交。解决脏读存在不可重复读与幻读。 REPEATABLE_READ可重复读。解决脏读、不可重复读存在幻读 SERIALIZABLE串行化。不存在并发问题。
1.2.2、事务传播行为常量
Propagation.REQUIRED当前没有事务的时候就会创建一个新的事务如果当前有事务就直接加入该事务比较常用的设置Propagation.SUPPORTS支持当前事务如果当前有事务就直接加入该事务当前没有事务的时候就以非事务方式执行Propagation.MANDATORY支持当前事务如果当前有事务就直接加入该事务当前没有事务的时候就抛出异常Propagation.REQUIRES_NEW创建新事务无论当前是否有事务都会创建新的PROPAGATION_NESTEDPROPAGATION_NEVERPROPAGATION_NOT_SUPPORTED
1.2.3、默认事务超时时限
常量 TIMEOUT_DEFAULT 定义了事务底层默认的超时时限sql 语句的执行时长。
注意事务的超时时限起作用的条件比较多且超时的时间计算点较复杂。所以该值一般就使用默认值即可。
2、基于注解的事务
Service
public class TeamService {Autowiredprivate TeamDao teamDao;/*** Transactional 属性 说明* readOnly:是否只读* rollbackFor{Exception.class} 遇到什么异常会回滚* propagation事务的传播* Propagation.REQUIRED:当前没有事务的时候就会创建一个新的事务如果当前有事务就直接加入该事务比较常用的设置* Propagation.SUPPORTS:支持当前事务如果当前有事务就直接加入该事务当前没有事务的时候就以非事务方式执行* Propagation.MANDATORY:支持当前事务如果当前有事务就直接加入该事务当前没有事务的时候就抛出异常* Propagation.REQUIRES_NEW:创建新事务无论当前是否有事务都会创建新的* isolationIsolation.DEFAULT事务的隔离级别默认是数据库的隔离级别ff*/Transactional(propagation Propagation.REQUIRED, rollbackFor {Exception.class}, isolation Isolation.DEFAULT)public int insert(Team team) {// 为了体现事务的内容:业务要求:同时插入两条数据都成功业务才算完成,一条失败整个业务失败int i1 teamDao.insert(team);System.out.println(插入1: i1);int s 1/0;int i2 teamDao.insert(team);System.out.println(插入2: i2);return i1 i2;}
} context:component-scan base-packagecom.AE.service/bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdataSource//beantx:annotation-driven transaction-managertransactionManager/ 测试
public class test02 {Testpublic void test01() {ApplicationContext ac new ClassPathXmlApplicationContext(spring.xml);TeamService teamService (TeamService) ac.getBean(teamService);Team team new Team();team.settName(test1);team.setLocation(test1);int i teamService.insert(team);System.out.println(i);}
}
3、基于XML的事务
添加依赖
dependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion1.9.6/version
/dependency 通过aop切面实现事务在tx:advice中设置相关的设置 bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdataSource//beantx:advice idtxAdvice transaction-managertransactionManagertx:attributestx:method nameinsert* propagationREQUIRED isolationDEFAULT/tx:method nameadd* propagationREQUIRED/tx:method nameupdate* propagationREQUIRED/tx:method namedel* propagationREQUIRED/tx:method namequery* propagationSUPPORTS read-onlytrue//tx:attributes/tx:adviceaop:configaop:pointcut idpt expressionexecution(* com.AE.service..*.*(..))/aop:advisor advice-reftxAdvice pointcut-refpt//aop:config
Service中的把注解删掉之后其它代码就不变。