事务管理 Transaction.java
package org.dave.common.access;
import java.sql.Connection;
import java.sql.SQLException;
import org.dave.common.exception;
/**
* 事务
* @author 喵了个咪
*/
public class Transaction {
private Connection conn;
public Transaction() {
this.conn = DataConnection.getConnection();
}
/**
* @param conn 数据库连接
*/
public Transaction(Connection conn) {
this.conn = conn;
}
/**
* @return 数据库连接
*/
public Connection getConnection() {
return conn;
}
/**
* 关闭事务,同时提交
* @throws DataSourceException
*/
public void close() throws DataSourceException {
try {
commit();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
throw new DataSourceException("关闭数据库连接时发生异常。", e);
}
}
}
/**
* 检查事物是否关闭
* @throws DataSourceException
* @return
*/
public boolean isClosed() throws DataSourceException {
try {
return conn.isClosed();
} catch (SQLException e) {
e.printStackTrace();
throw new DataSourceException("检查数据库连接是否关闭时发生异常。", e);
}
}
/**
* 提交
* @throws DataSourceException
*/
public void commit() throws DataSourceException {
try {
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
throw new DataSourceException("数据库提交时发生异常。", e);
}
}
/**
* 回滚
* @throws DataSourceException
*/
public void rollback() throws DataSourceException {
try {
conn.rollback();
} catch (SQLException e) {
e.printStackTrace();
throw new DataSourceException("数据库回滚时发生异常。", e);
}
}
/**
* 判断是否开始事务
* @return
* @throws DataSourceException
*/
public boolean isBegin() throws DataSourceException {
try {
return !conn.getAutoCommit();
} catch (SQLException e) {
e.printStackTrace();
throw new DataSourceException("判断事务是否开始时发生异常。", e);
}
}
/**
* 开始事务
* @throws DataSourceException
*/
public void begin() throws DataSourceException {
try {
conn.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
throw new DataSourceException("关闭数据库连接时发生异常。", e);
}
}
}
数据源异常 DataSourceException.java
package org.dave.common.exception;
/**
* 数据源异常
* @author 喵了个咪
*/
public class DataSourceException extends RuntimeException {
/**
* 实例化数据源异常
* @param message 异常信息
*/
public DataSourceException(String message) {
super(message);
}
/**
* 实例化数据源异常
* @param message 异常信息
* @param cause 异常原因
*/
public DataSourceException(String message, Throwable cause) {
super(message, cause);
}
}