cn.coder.jdbc.SqlTranction Maven / Gradle / Ivy
package cn.coder.jdbc;
import java.sql.Connection;
import java.sql.SQLException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 数据库事务处理对象
*
* @author YYDF
*
*/
public final class SqlTranction {
private static final Logger logger = LoggerFactory.getLogger(SqlTranction.class);
private final Connection conn;
private final SqlTranction[] tranctions;
private final SqlSessionBase session;
public SqlTranction(SqlSessionBase session, Connection connection) throws SQLException {
this(session, connection, null);
}
public SqlTranction(SqlSessionBase session, Connection connection, SqlTranction[] tranctions) throws SQLException {
this.session = session;
this.tranctions = tranctions;
this.conn = connection;
this.conn.setAutoCommit(false);
}
public Connection Connection(SqlSessionBase current) {
if (current.equals(session))
return this.conn;
for (SqlTranction tran : tranctions) {
if (current.equals(tran.getSession())) {
return tran.Connection();
}
}
throw new NullPointerException("Can not find the session tranction");
}
private Connection Connection() {
return this.conn;
}
private SqlSessionBase getSession() {
return this.session;
}
public void commit() {
try {
this.conn.commit();
if (tranctions != null) {
for (SqlTranction tran : tranctions) {
tran.commit();
}
}
logger.debug("Tranction commited");
} catch (SQLException e) {
logger.error("Tranction commit faild", e);
}
}
public void rollback(Exception e) {
try {
this.conn.rollback();
if (tranctions != null) {
for (SqlTranction tran : tranctions) {
tran.rollback(e);
}
}
logger.debug("Tranction rollbacked");
logger.error("Tranction error:", e);
} catch (SQLException ex) {
logger.error("Tranction rollback faild", ex);
}
}
public void close() {
try {
this.conn.setAutoCommit(true);
this.session.release(this.conn);
if (tranctions != null) {
for (SqlTranction tran : tranctions) {
tran.close();
}
}
logger.debug("Tranction closed");
} catch (SQLException e) {
logger.error("Tranction close faild", e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy