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