org.nutz.trans
类 Trans

java.lang.Object
  继承者 org.nutz.trans.Trans

public abstract class Trans
extends java.lang.Object

用模板的方式操作事务

作者:
zozoh(zozohtnt@gmail.com), wendal(wendal1985@gmail.com)

构造方法摘要
Trans()
           
 
方法摘要
static void begin()
          开始一个事务,级别为 TRANSACTION_READ_COMMITTED 你需要手工用 try...catch...finally 来保证你提交和关闭这个事务
static void begin(int level)
          开始一个指定事务 你需要手工用 try...catch...finally 来保证你提交和关闭这个事务
static void close()
          关闭事务,执行它前,你必需保证你已经手工开始了一个事务
static void commit()
          提交事务,执行它前,你必需保证你已经手工开始了一个事务
static void exec(Atom... atoms)
          执行一组原子操作,默认的事务级别为: TRANSACTION_READ_COMMITTED。
static void exec(int level, Atom... atoms)
          执行一组原子操作,并指定事务级别。
static
<T> T
exec(Molecule<T> molecule)
          执行一个分子,并给出返回值
static Transaction get()
           
static void rollback()
          回滚事务,执行它前,你必需保证你已经手工开始了一个事务
static void setup(java.lang.Class<? extends Transaction> classOfTransaction)
          这个函数允许你扩展默认的 Nutz 事务实现方式
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

Trans

public Trans()
方法详细信息

get

public static Transaction get()
返回:
当前线程的事务,如果没有事务,返回 null

setup

public static void setup(java.lang.Class<? extends Transaction> classOfTransaction)
这个函数允许你扩展默认的 Nutz 事务实现方式

参数:
classOfTransaction - 你的事务实现

exec

public static void exec(Atom... atoms)
执行一组原子操作,默认的事务级别为: TRANSACTION_READ_COMMITTED。详细请看 exec(int level, Atom... atoms) 函数的说明

参数:
atoms - 原子操作对象

exec

public static void exec(int level,
                        Atom... atoms)
执行一组原子操作,并指定事务级别。

这里需要注意的是,Nutz 支持事务模板的无限层级嵌套。 这里,如果每一层嵌套,指定的事务级别有所不同,不同的数据库,可能引发不可预知的错误。

所以,嵌套的事务模板的事务,将以最顶层的事务为级别为标准。就是说,如果最顶层的事务级别为 'TRANSACTION_READ_COMMITTED',那么下面所包含的所有事务,无论你指定什么样的事务级别,都是 'TRANSACTION_READ_COMMITTED', 这一点,由抽象类 Transaction 来保证。其 setLevel 当被设置了一个大于 0 的整数以后,将不再 接受任何其他的值。

你可以通过继承 Transaction 来修改这个默认的行为,当然,这个行为修改一般是没有必要的。

另外,你还可能需要知道,通过 Trans.setup 方法,能让整个虚拟机的 Nutz 事务操作都使用你的 Transaction 实现

参数:
level - 事务的级别。

你可以设置的事务级别是:

  • java.sql.Connection.TRANSACTION_NONE
  • java.sql.Connection.TRANSACTION_READ_UNCOMMITTED
  • java.sql.Connection.TRANSACTION_READ_COMMITTED
  • java.sql.Connection.TRANSACTION_REPEATABLE_READ
  • java.sql.Connection.TRANSACTION_SERIALIZABLE
不同的数据库,对于 JDBC 事务级别的规范,支持的力度不同。请参看相应数据库的文档,已 确定你设置的数据库事务级别是否被支持。
atoms - 原子操作对象
另请参见:
Transaction, Connection

exec

public static <T> T exec(Molecule<T> molecule)
执行一个分子,并给出返回值

类型参数:
T -
参数:
molecule - 分子
返回:
分子返回值

begin

public static void begin()
                  throws java.lang.Exception
开始一个事务,级别为 TRANSACTION_READ_COMMITTED

你需要手工用 try...catch...finally 来保证你提交和关闭这个事务

抛出:
java.lang.Exception

begin

public static void begin(int level)
                  throws java.lang.Exception
开始一个指定事务

你需要手工用 try...catch...finally 来保证你提交和关闭这个事务

参数:
level - 指定级别
抛出:
java.lang.Exception

commit

public static void commit()
                   throws java.lang.Exception
提交事务,执行它前,你必需保证你已经手工开始了一个事务

抛出:
java.lang.Exception

rollback

public static void rollback()
                     throws java.lang.Exception
回滚事务,执行它前,你必需保证你已经手工开始了一个事务

抛出:
java.lang.Exception

close

public static void close()
                  throws java.lang.Exception
关闭事务,执行它前,你必需保证你已经手工开始了一个事务

抛出:
java.lang.Exception