EntityManager对象的事务管理方式有两种,分别为JTA和RESOURCE_LOCAL,即JavaTransaction API方法和本地事务管理。
除此之外,不同类型的EntityManager对象,事务类型也是不同的,如下表
| Java EE环境 | Java SE 环境 | |
EJB容器 | Web容器 | ||
应用托管 | JTA、LOCAL | JTA、LOCAL | LOCAL |
容器托管(EJB) | JTA | 不支持 | 不支持 |
JTA(JavaTransaction API)事务是J2EE规范中有关事务的标准。JTA事务只能运行在EJB容器或web容器中,它的最大优势就是可以支持分布式事务,如果系统采用的是分布式数据库,那么只能选用JTA来管理事务。
RESOURCE_LOCAL事务是数据库本地事务,是数据库级别的事务,只能针对一种数据库,不支持分布式的事务,对于中小型的应用,可以采用RESOURCE_LOCAL管理事务。
本地事务EntityTransaction中定义了有关本地事务的API,可以通过EntityManager对象的getTransaction方法获取EntityTransaction对象,主要方法有:
1) begin:声明事务开始;
2) commit:提交事务;
3) rollback:事务回滚;
4) isActive:判断当前事务是否处于激活状态;