package org.nutz.trans;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
/**
* 事务上下文
* @author wendal(wendal1985@gmail.com)
*
*/
public abstract class Transaction {
private int level;
/**
* 创建事务上下文
*/
protected Transaction() {}
/**
* 获取事务等级, 可能的值为0,1,2,4,8
* @return 当前的事务等级
*/
public int getLevel() {
return level;
}
/**
* 设置事务等级
* @param level 事务等级
*/
public void setLevel(int level) {
if (this.level <= 0)
this.level = level;
}
/**
* 层次id
* @return 当前事物的层次id
*/
public abstract long getId();
/**
* 提交
*/
protected abstract void commit();
/**
* 回滚
*/
protected abstract void rollback();
/**
* 获取该连接池所关联的连接, 同一个DataSource在一个事务中使用同一个连接
* @param dataSource 数据源
* @return 数据库连接
* @throws SQLException 获取连接失败或其他异常
*/
public abstract Connection getConnection(DataSource dataSource) throws SQLException;
/**
* 关闭事务,清理现场
*/
public abstract void close();
}