<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<!-- <property name="dataSource" ref="dataSource" />-->
</bean>
<!-- 启用支持Annotation注解方式的事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager" />

1. 由spring框架自动化管理

public class ArticleAction {

    @Autowired
private IArticleService articleService;
@Autowired
private IArticleClassService articleClassService; @RequestMapping({"/jpatest1.htm"})
@Transactional(rollbackFor = Exception.class,propagation=Propagation.REQUIRED)
public ModelAndView jpatest1(HttpServletRequest request){
ModelAndView mv = new JModelAndView("jpatest.html"); ArticleClass articleClass = this.articleClassService.getObjById(CommUtil.null2Long(163843));
articleClass.setClassName("特色服务2222");
this.articleClassService.update(articleClass); Article article = this.articleService.getObjByProperty("mark", "join111");
article.setTitle(article.getTitle()+"2222");
this.articleService.update(article); mv.addObject("status","transaction success");
return mv;
} @RequestMapping({"/jpatest2.htm"})
@Transactional
public ModelAndView jpatest2(HttpServletRequest request){
ModelAndView mv = new JModelAndView("jpatest.html"); ArticleClass articleClass = this.articleClassService.getObjById(CommUtil.null2Long(163843));
articleClass.setClassName("特色服务2222");
this.articleClassService.update(articleClass); Article article = this.articleService.getObjByProperty("mark", "join111");
article.setTitle(article.getTitle()+"2222");
this.articleService.update(article); mv.addObject("status","transaction success");
return mv;
} }

2. 手动提交事务

public class ArticleAction {

    @Autowired
private IArticleService articleService;
@Autowired
private IArticleClassService articleClassService; /**
* JpaTransactionManager事务管理 .
*/
@Resource(name = "transactionManager")
private JpaTransactionManager tm; @RequestMapping({"/jpatest.htm"})
@Transactional(value="transactionManager", rollbackFor = Exception.class)
public ModelAndView jpatest(HttpServletRequest request){
ModelAndView mv = new JModelAndView("jpatest.html");
//事务开始
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
def.setTimeout(30);
//事务状态
TransactionStatus status = tm.getTransaction(def); try {
//此处写持久层逻辑
ArticleClass articleClass = this.articleClassService.getObjById(CommUtil.null2Long(163843));
articleClass.setClassName("特色服务2222");
this.articleClassService.update(articleClass); Article article = this.articleService.getObjByProperty("mark", "join111");
article.setTitle(article.getTitle()+"2222");
this.articleService.update(article); tm.commit(status); mv.addObject("status","transaction success");
} catch (Exception e) {
System.out.println("出现异常,开始回滚"+e);
if(!status.isCompleted()){
tm.rollback(status);
}
//throw e;
} return mv;
} }

最新文章

  1. GIt 从入门到放弃
  2. Jquery小例子:全选按钮、加事件、挂事件;parent()语法;slideToggle()语法;animate()语法;元素的淡入淡出效果:fadeIn() 、fadeOut()、fadeToggle() 、fadeTo();function(e):e包括事件源和时间数据;append() 方法
  3. javaSE第二天
  4. JSTL 数字日期标签库
  5. 进程创建函数fork()、vfork() ,以及excel()函数
  6. uva 1331 - Minimax Triangulation(dp)
  7. Java微信公众平台开发_02_启用服务器配置
  8. 【转自Testerhome】iOS 真机如何安装 WebDriverAgent
  9. Algorithm --&gt; 动态规划
  10. 第四十四条:为所有导出的API元素编写文档注释
  11. C#基础用户登陆
  12. playframework 一步一步来 之 日志(一)
  13. EXCEL这样根据某单元格的内容来改变整行颜色
  14. Money 20/20 | 未来金融数字化转型:数字化半径与全栈式战略观
  15. [Lydsy1805月赛]口算训练 BZOJ5358
  16. Python的模块调用
  17. win7右键新建文件夹不见了
  18. python,java操作mysql数据库,数据引擎设置为myisam时能够插入数据,转为innodb时无法插入数据
  19. Python之函数装饰器
  20. JS练习--自动生成100个li

热门文章

  1. JavaScript不可变原始值和可变的对象引用
  2. IIC 概述之1
  3. tableview 重用nib cell
  4. SharePoint 设置Lookup 字段的值
  5. Spring boot Mybatis
  6. centos 6.5 安装weixin
  7. 【HDOJ】1813 Escape from Tetris
  8. linux安装 Android Studio详细教程,支持性较差,需要安装最新底层库内核的linux
  9. kernel解读之 pick_next_rt_entity
  10. 如何在不影响数据库的正常使用的情况下得到数据的完整.mdf和.ldf文