php cdi_CDI中的事务异常处理
生活随笔
收集整理的這篇文章主要介紹了
php cdi_CDI中的事务异常处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
php 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
php cdi
總結
以上是生活随笔為你收集整理的php cdi_CDI中的事务异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring 计划任务_与Spring的
- 下一篇: 搜狗输入法linux怎么安装(搜狗输入法