Java EE 事务管理与性能测试
1. 持久化客户信息
在示例中,我们选择将事务开始操作 begin() 嵌入到拦截器类中,该拦截器类会拦截 BMT 会话 bean 的方法。当然,我们也可以向客户端暴露 beginTransaction() 调用。由于我们采用了当前的方法,现在只需调用 persistEntity() 方法,它会隐式地开始事务(但不会提交事务):
// 持久化客户信息,依赖级联设置持久化所有相关的购物车项实体。
// 重新分配客户信息以获取 EJB 容器在持久化时分配的 ID 值。
orderProcessorBMT.persistEntity(customer);
事务上下文不会扩展到客户端线程本身,它仅存在于会话 bean 的线程中。在拦截器内部调用 UserTransaction.begin() 会在该线程上建立一个事务上下文,当调用会话 bean 的 persistEntity() 方法时,该上下文可供会话 bean 使用。
2. 创建客户订单
当前生效的事务会继续进行创建客户订单的步骤。此阶段与无状态 CMT 示例类似,不同之处在于事务已经创建,并且必须在结束时显式提交。
// 创建客户订单并从购物车项创建订单项
final CustomerOrder customerOrder =
orderProces
超级会员免费看
订阅专栏 解锁全文
980

被折叠的 条评论
为什么被折叠?



