一、前言
今天中午一小伙伴在进行JPA的相关配置时遇到一些疑惑点,自己思考了一下也没有搞明白,就查了一些资料,翻看了之前的一些代码,逐渐搞明白了几点。写一博客分享之。
二、UserTransaction简析
2.1 代码展示
请看下面一段代码:
1.注意看javax.transaction.UserTransaction
import javax.transaction.UserTransaction;
@Inject
private UserTransaction utx;
1
2
3
4
importjavax.transaction.UserTransaction;
@Inject
privateUserTransactionutx;
2.注意看UserTransaction的实例化方式
private UserTransaction utx = entityManager.getTransaction();
1
privateUserTransactionutx=entityManager.getTransaction();
2.2 官方文档解析
UserTransaction的Java EE6官方文档是这样定义的:
The UserTransaction interface defines the methods that allow an
application to explicitly manage transaction boundaries.
UserTransaction
接口定义的方法允许应用程序显式地管理事务边界。
换言之,UserTransaction是Java EE中用来进行事务管理的一个接口。
其主要实现方法有如下几个:
begin()
getStatus()
rollback()
setRollbackOnly()
setTransactionTimeout(int seconds)
三、JPA中的事务管理
3.1 事务管理相关概念理解
事务的概念:
事务是应用程序中一系列严密的操作的集合,也就是两个及两个以上操作的集合。事务的特点是,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。
同时也就意味着事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。
事务机制的优势:
使用事务机制的好处非常明显,例如银行转账之类的交易操作中,事务有着重要的作用。事务的成功取决于事务单元帐户相互依赖的操作行为是否能全部执行成功,只