第 4 章 使用注解以声明性方式管理 JTA 事务
您可以通过根据注解自动启动并提交 JTA 事务,让容器对事务进行抽样。以下章节演示了如何使用 @Transactional 注释来管理 JTA 事务和定义事务边界。
4.1. 以声明性方式定义事务边界 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您可以使用 @Transactional 来控制在方法级别或类级别的任何 CDI bean 上的事务边界,以确保每个方法都是事务的。这也适用于 REST 端点。
流程
使用条目方法上的
@Transactional注释定义事务范围:src/main/java/org/acme/SantaClauseService.java 示例
import javax.inject.Inject; import javax.enterprise.context.ApplicationScoped; import javax.transaction.Transactional; @ApplicationScoped public class SantaClausService { @Inject ChildDAO childDAO; @Inject SantaClausDAO santaDAO; @Transactional1 public void getAGiftFromSanta(Child child, String giftDescription) { // some transaction work Gift gift = childDAO.addToGiftList(child, giftDescription); if (gift == null) { throw new OMGGiftNotRecognizedException();2 } else { santaDAO.addToSantaTodoList(gift); } } }