CDI中的事务异常处理
在Java EE中,在执行事务性业务方法期间引发的异常导致事务回滚。 但是,只有系统异常(即运行时异常)才是这种情况,该方法异常未在方法签名中声明。
对于应用程序异常(即检查的异常)或任何带@ApplicationException
注释的异常,不会自动回滚事务。 有时这会引起企业开发人员的困惑。
对于EJB业务方法,还可以通过指定@ApplicationException(rollback = true)
来强制事务回退应用程序异常。 但是,仅当EJB中的托管bean时才考虑使用此注释。
CDI还可以使用@Transactional
事务上执行业务方法。 此注释使我们拥有更多控制权。 使用@Transactional
我们不仅可以定义事务类型,例如REQUIRED
或REQUIRES_NEW
,而且可以定义我们要回滚或不希望回滚的异常类型:
public class CarManufacturer {@InjectCarFactory carFactory;@InjectEvent<CarCreated> createdCars;@PersistenceContextEntityManager entityManager;@Transactional(rollbackOn = CarCreationException.class,dontRollbackOn = NotificationException.class)public Car manufactureCar(Specification specification) {Car car = carFactory.createCar(specification);entityManager.persist(car);createdCars.fire(new CarCreated(car.getIdentification()));return car;}}
CarCreationException
发生CarCreationException
,事务将被回滚,但不是NotificationException
。
翻译自: https://www.javacodegeeks.com/2018/01/transactional-exception-handling-cdi.html
CDI中的事务异常处理相关推荐
- php cdi_CDI中的事务异常处理
php cdi 在Java EE中,在执行事务性业务方法期间引发的异常导致事务回滚. 但是,只有系统异常(即运行时异常)才是这种情况,该方法异常未在方法签名中声明. 对于应用程序异常(即检查的异常)或 ...
- springboot事务回滚源码_Spring Boot中的事务是如何实现的
1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...
- springboot 事务手动回滚_Spring Boot中的事务是如何实现的
1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...
- python切面异常处理_Spring项目中优雅的异常处理
Spring项目中优雅的异常处理 前言 如今的Java Web项目多是以 MVC 模式构建的,通常我们都是将 Service 层的异常统一的抛出,包括自定义异常和一些意外出现的异常,以便进行事务回滚, ...
- springboot 事务_Spring Boot中的事务是如何实现的?懂吗?
一个SpringBoot问题就干趴下了?我却凭着这份PDF文档吊打面试官. 金三银四第一天,啃透这些SpringBoot知识点,还怕干不赢面试官? Spring全家桶笔记:Spring+Spring ...
- Spring中的事务控制
Chapter 1. Spring中的事务控制(Transacion Management with Spring) Table of Contents 1.1. 有关事务(Transaction)的 ...
- Spring中的事务控制(Transacion Management with Spring)
1.1. 有关事务(Transaction)的楔子 1.1.1. 认识事务本身1.1.2. 初识事务家族成员 1.2. 群雄逐鹿下的Java事务管理 1.2.1. Java平台的局部事务支持1.2.2 ...
- Spring中的事务控制学习中(转)
1.1. 有关事务(Transaction)的楔子 1.1.1. 认识事务本身 1.1.2. 初识事务家族成员 1.2. 群雄逐鹿下的Java事务管理 1.2.1. Java平台的局部事务支持 1.2 ...
- Spring中的事务控制学习中
Chapter 1. Spring中的事务控制(Transacion Management with Spring) Table of Contents 事务管理(Transaction Manage ...
最新文章
- Aooms_基于SpringCloud的微服务基础开发平台实战_002_工程构建
- 实现二叉树的先序遍历、中序遍历、后序遍历
- 将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
- WEB开发中的页面跳转方法总结
- python2.x和3.x的区别 print_Python2.x和Python3.x的区别
- Android开发环境准备和常用命令总结
- 上海德拓人工智能事业部招聘图像算法工程师
- 问答Goodfellow:没有样例能不能训练机器学习算法?
- The Most Important Skill for Software Architects
- 《java程序员全攻略:从小工到专家》连载一:外行人眼中的IT人
- 【渝粤教育】国家开放大学2018年春季 3819-21T燃气安全管理 参考试题
- JAVA网络编程实战(笔记)
- win7主题文件夹背景破解
- 英语四六级考试系统+爬虫获取试题的系统(数据库设计)的开发思路
- Java 利用hutool工具实现导出excel并合并单元格
- Neural Collaborative Filtering复现
- 睡眠 应该用 a加权 c加权_创3年新高的创业板,应该如何选择
- DeFi基准利率今日为3.32%
- Zoundry Raven网易博客设置
- 使用zuma免费建站后应如何维护网站?