1. 什么是事务... 3 2.1 事务定义... 3 2.2 事务场景... 3 2.3 事务的工作原理... 4 2.4 事务的必要条件(ACID)... 5 2.5 事务隔离级别... 6 2.6 事务隔离级别与锁... 11 2. 事务类型... 12 3.1 本地事务... 12 3.2 分布式事务... 12 2.2.1 JTA. 14 2.2.2 JTS. 14 2.2.3 XA. 17 2.2.4 2PC. 18 2.2.5 XA与2PC协议... 19 2.2.6 实现方式分类... 20 2.2.7 事务传播机制(Transaction Attributes)... 20 3. 事务模型... 21 3.1 本地事务模型... 21 3.1.1 自动提交和连接管理... 22 3.1.2 适用场景和限制... 23 3.2 编程式事务模型... 23 3.2.1 获取JTA UserTransaction引用... 24 3.2.2 编程式事务陷阱... 24 3.2.3 事务上下文问题... 25 3.2.4 编程式事务适用场景... 26 3.2.5 UserTransaction接口... 26 3.3 声明式事务模型... 27 3.3.1 指定事务属性... 28 3.3.2 异常处理... 30 3.3.3 EJB3.0. 30 3.3.4 setRollbackOnly的替代方法... 31 3.3.5 Required与Mandatory. 31 3.3.6 TransactionManager接口... 31 3.3.7 EJBContext接口... 32 4. 事务设计模式... 32 4.1 Client Owner Transaction设计模式... 32 4.1.1 场景... 32 4.1.2 解决方案... 32 4.1.3 结论... 33 4.1.4 实现... 33 4.2 Domain Service Owner设计模式... 35 4.2.1 场景... 35 4.2.2 条件... 36 4.2.3 解决方案... 36 4.2.4 结论... 36 4.2.5 实现... 37 4.3 Server Delegate Owner 设计模式... 38 4.3.1 场景... 39 4.3.2 条件... 39 4.3.3 解决方案... 40 4.3.4 实现... 41 5. 事务陷阱... 42