Java事务API。
- 允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序的JTA支持极大地增强了数据访问能力。事务最简单最直接的目的就是保证数据的有效性,数据的一致性。
- 个人理解:JTA事务比JDBC事务更强大。一个JTA事务可以有多个参与者,而一个JDBC事务则被限定在一个单一的数据库连接。
- 调用Javax.transaction.UserTransaction接口的begin、commit、rollback等方法控制事务
事务隔离、传播属性的设置
- 并发访问和隔离(5种隔离级别Connection接口)-----多个线程同时访问一个数据库
- TRANSACTION_NONE:对事务和数据不进行任何隔离限制
- TRANSACTION_READ_UNCOMMITTED:允许事务读取另一个事务的未提交数据---读脏数据
- TRANSACTION_READ_COMMITTED:读取所有提交的数据,不允许重复读---默认的隔离级别
- TRANSACTION_REPEATABLE_READ:可重复读的事务隔离
- TRANSACTION_SERUALIZABLE:可串行化的事务----最高级别也是性能最低的
- 属性
- Required:默认的EJB事务
- RequiresNew:为methodB开启一个新的事务
- Mandatory:
- NotSupported
- Supports
- Never
事务的范围
EJB的事务管理
容器管理事务(CMT)
- 容器将在方法之前开始JTA事务,根据方法调用情况决定提交或回滚事务
- Annotation或XML配置文件告诉容器如何处理事务
- 简单方便但不灵活
Bean管理事务
- 开发者决定事务边界,灵活指定事务划分细节,是使用JTA还是JDBC事务
事务超时设置
解决:某个事务超过时长没有提交,应用服务器将会自动回滚该事务