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
事务的范围
![](https://i-blog.csdnimg.cn/blog_migrate/c35c898197ec32d35a8b028660e71d5b.png)
EJB的事务管理
容器管理事务(CMT)
-
容器将在方法之前开始JTA事务,根据方法调用情况决定提交或回滚事务
-
Annotation或XML配置文件告诉容器如何处理事务
-
简单方便但不灵活
Bean管理事务
-
开发者决定事务边界,灵活指定事务划分细节,是使用JTA还是JDBC事务
-
事务超时设置
解决:某个事务超过时长没有提交,应用服务器将会自动回滚该事务
![](https://i-blog.csdnimg.cn/blog_migrate/adc1d0b6308f24da459e7fb4a9cfd7b7.png)