EntityTransaction 接口用来管理资源层实体管理器的事务操作,通过调用实体管理器的getTransaction方法 获得其实例。
其常用方法如下:
① begin
用于启动一个事务,此后的多个数据库操作将作为整体被提交或撤消。
若这时事务已启动则会抛出 IllegalStateException 异常。
② commit
用于提交当前事务。
即将事务启动以后的所有数据库更新操作持久化至数据库中。
③ rollback
撤消(回滚)当前事务。
即撤消事务启动后的所有数据库更新操作,从而不对数据库产生影响。
④ setRollbackOnly
使当前事务只能被撤消。
⑤ getRollbackOnly
查看当前事务是否设置了只能撤消标志。
⑥ isActive
查看当前事务是否是活动的。
如果返回true则不能调用begin方法,否则将抛出 IllegalStateException 异常。
如果返回 false 则不能调用 commit、rollback、setRollbackOnly 及 getRollbackOnly 方法,否则将抛出 IllegalStateException 异常。
示例如下:
@Beforepublic void init(){entityManagerFactory = Persistence.createEntityManagerFactory("jpa-1");entityManager = entityManagerFactory.createEntityManager();//必须先获取事务实例transaction = entityManager.getTransaction();//开启事务transaction.begin();}@Afterpublic void destroy(){//提交事务transaction.commit();entityManager.close();entityManagerFactory.close();}