Spring学习笔记之Spring事务及测试
2015-06-10 07:46
441 查看
REQUIRED (默认) 业务方法需要在事务中运行,如果方法运行的时候已经开启事务,就加入事务,否则创建新的事务
NOT_SUPPORTED 声明方法不需要开启事务.如果已经开启事务后调用该方法.则先挂起该事务,方法执行完毕后,事务恢复
REQUIRES_NEW 不管是否存在事务,都另行开启新的事务.如果先前已经开启事务,挂起原先事务.创建新的事务.新的事务执行结束后,恢复原先事务
MANDATORY 只能在已经存在的事务中执行,不能自行创建事务,如果在没有开启事务的环境下调用,容器抛出例外
SUPPORTS 墙头草,有事务就在事务中执行.没事务就在没事务的环境下执行
NEVER 绝对不能在事务中执行.如果执行.抛出例外
NESTED 如果有事务存在,开启一个新事务嵌套在上层事务中.开启的新事务具有自己独立的回滚点.新事务的回滚不会对外部事务造成影响,
但是外部事务的提交会直接提交嵌套事务
如果没有事务存在,则按照REQUIRED属性执行,该属性只对DataSourceTransationManager事务管理器有效
测试REQUIRED
结果没有更新id为1的用户信息,证明REQUIRED有效
NOT_SUPPORTED 声明方法不需要开启事务.如果已经开启事务后调用该方法.则先挂起该事务,方法执行完毕后,事务恢复
REQUIRES_NEW 不管是否存在事务,都另行开启新的事务.如果先前已经开启事务,挂起原先事务.创建新的事务.新的事务执行结束后,恢复原先事务
MANDATORY 只能在已经存在的事务中执行,不能自行创建事务,如果在没有开启事务的环境下调用,容器抛出例外
SUPPORTS 墙头草,有事务就在事务中执行.没事务就在没事务的环境下执行
NEVER 绝对不能在事务中执行.如果执行.抛出例外
NESTED 如果有事务存在,开启一个新事务嵌套在上层事务中.开启的新事务具有自己独立的回滚点.新事务的回滚不会对外部事务造成影响,
但是外部事务的提交会直接提交嵌套事务
如果没有事务存在,则按照REQUIRED属性执行,该属性只对DataSourceTransationManager事务管理器有效
测试REQUIRED
@Transactional(propagation=Propagation.REQUIRED) public void save(UserInfo userInfo) { jdbcTemp.update("insert into userinfo (name) values (?)", new Object[]{userInfo.getName()}, new int[]{java.sql.Types.VARCHAR} ); UserInfo ui = new UserInfo(); ui.setId(1); ui.setName("updated_suc"); update(ui); throw new RuntimeException("发生了异常"); } @Transactional(propagation=Propagation.REQUIRED) public void update(UserInfo userInfo) { jdbcTemp.update("update userinfo set name=? where id=?", new Object[]{userInfo.getName(), userInfo.getId()}, new int[]{java.sql.Types.VARCHAR, java.sql.Types.INTEGER} ); }
ApplicationContext context = new ClassPathXmlApplicationContext("jdbcsource.xml"); UserInfoService userInfoService = (UserInfoService)context.getBean("userInfoService"); @Test public void test1(){ UserInfo userInfo = new UserInfo(); userInfo.setName("windskymr1"); userInfoService.save(userInfo); }
结果没有更新id为1的用户信息,证明REQUIRED有效
相关文章推荐
- springmvc搭框架的第一步
- Eclipse使用hibernate插件详解,有详细的图解,感觉不错
- java 性能调优
- java 性能调优
- JDK,JRE在mac OS X中的目录结构
- Java中==和equals()方法的区别
- struts1.x和struts2.x随笔
- spring mvc 注解基本配置(@resource,@autowired,@Component...)
- JavaBean及其两种使用方式
- java 登陆和注册传输的加密解密
- Spring MVC 中的 forward 和 redirect 的简单理解
- 使用lsof命令查找java应用中未关闭的文件
- Java 并发编程 1 进程和线程
- Struts2开发框架 第一天(1)
- Struts2 Action(1)
- Struts2 Action(2)
- Struts2学习笔记(3)——第一个 struts2工程
- JDK源码之String、StringBuffer、StringBuilder
- struts2搭建
- 读书笔记--《java语言程序设计--基础篇》