JTA的事务级别:
REQUIRED
REQUIRES_NEW
MANDATORY
SUPPORTS
NOT_SUPPORTED
NEVER
REQUIRED:
表示方法必须在一个事务里操作,如果当前线程已经存在了一个事务那么此方法就会被并入当前事务中执行,如果当前事务没有事务的话 EJB容器会开启一个新的事务来完成此操作,待操作完成以后会进行事务的提交。
REQUIRES_NEW
如果当前线程中已经存在一个事务则将该事务挂起,在执行此方法的时候由EJB容器开启一个新的事务,在执行完后进行commit操作,然后会将挂起的事务激活
MANDATORY
因为这个单词开发中不常见先说下这个单词的意思是强迫的意思,此级别的事务要求当前方法必须运行在一个事务当中,如果当前线程中不存在事务则EJB容器不会去开启一个新的事务会抛出
EJBTransactionRequiredException
SUPPORTS
此级别表明当前方法的invoke 支持事务的操作,如果线程中存在事务则在事务中完成操作,如果没有则不使用事务完成操作
NOT_SUPPORTED
表明此方法不支持事务,如果当前线程中存在事务则在将当前事务挂起等方法执行完激活改事务,如果不存在事务则什么都不做
NEVER
这个级别和MANDATORY差不多,如果当前方法在执行的时候有事务存在抛出一个EJBException