EJB 事务管理与隔离机制详解
1. EJB 事务属性概述
在 EJB 中,不同的事务属性决定了 EJB 在事务中的行为。以下是几种常见的事务属性及其特点:
- Never :参与事务时,Never EJB 会在无事务的情况下正常执行。若由非事务性客户端调用,它能正常工作;若由事务性客户端调用,该方法会向 EJB 客户端抛出 EJBException,因为处于事务中的客户端或 EJB 不能调用此方法。
- Mandatory :该属性要求调用企业 bean 前客户端必须有正在进行的事务。但它不能用于 EJB 端点,因为 EJB 端点不传播客户端事务。不过,当 Web 服务事务标准化后,这种情况可能会改变。
- Required :默认的事务属性。若当前没有事务,会创建一个新事务;若已有事务,则使用现有事务。例如,在银行账户转账操作中, transfer() 方法就使用了该属性,以确保转账操作作为一个整体工作单元。
- Supports :不要求调用者有正在运行的事务,但会尊重当前运行的事务,以保证在事务内部有正确的可见性。如 getBalance() 方法,作为只读操作,不要求原子性、一致性或持久性,但在事务隔离方面,需要正确的可见性。
2. EJB 3.0 持久化与事务属性
EJB 规范强烈建议在 JTA 事务范围内访问 EntityManager 。因此,若使用 EJB 封装对持久实体的访问,应
超级会员免费看
订阅专栏 解锁全文
31

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



