第 4 章 使用注释以声明性方式管理 JTA 事务
您可以根据注解自动开始并提交 JTA 事务,让容器分离事务界限。以下小节介绍了如何管理 JTA 事务并使用 @Transactional 注释定义事务边界。
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); } } }