JPA事务回滚配置
2024-10-19 02:21:01
<!-- 配置事务管理器 -->
<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;
} }
最新文章
- GIt 从入门到放弃
- Jquery小例子:全选按钮、加事件、挂事件;parent()语法;slideToggle()语法;animate()语法;元素的淡入淡出效果:fadeIn() 、fadeOut()、fadeToggle() 、fadeTo();function(e):e包括事件源和时间数据;append() 方法
- javaSE第二天
- JSTL 数字日期标签库
- 进程创建函数fork()、vfork() ,以及excel()函数
- uva 1331 - Minimax Triangulation(dp)
- Java微信公众平台开发_02_启用服务器配置
- 【转自Testerhome】iOS 真机如何安装 WebDriverAgent
- Algorithm -->; 动态规划
- 第四十四条:为所有导出的API元素编写文档注释
- C#基础用户登陆
- playframework 一步一步来 之 日志(一)
- EXCEL这样根据某单元格的内容来改变整行颜色
- Money 20/20 | 未来金融数字化转型:数字化半径与全栈式战略观
- [Lydsy1805月赛]口算训练 BZOJ5358
- Python的模块调用
- win7右键新建文件夹不见了
- python,java操作mysql数据库,数据引擎设置为myisam时能够插入数据,转为innodb时无法插入数据
- Python之函数装饰器
- JS练习--自动生成100个li
热门文章
- JavaScript不可变原始值和可变的对象引用
- IIC 概述之1
- tableview 重用nib cell
- SharePoint 设置Lookup 字段的值
- Spring boot Mybatis
- centos 6.5 安装weixin
- 【HDOJ】1813 Escape from Tetris
- linux安装 Android Studio详细教程,支持性较差,需要安装最新底层库内核的linux
- kernel解读之 pick_next_rt_entity
- 如何在不影响数据库的正常使用的情况下得到数据的完整.mdf和.ldf文