/* 获取connection 对象* / import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;
import oracle.jdbc.driver.OracleDriver;
/** * @author sfluo * * TODO To change the template for this generated type comment go to Window - * Preferences - Java - Code Style - Code Templates */ public class DBUtil {
public static Connection conn;
public static Connection getConnection() {
try {
DriverManager.registerDriver(new OracleDriver()); conn = DriverManager.getConnection( "jdbc:oracle:thin:@10.100.143.161:1521:gb02", "gib", "gib"); } catch (SQLException e) { e.printStackTrace(); }
return conn; }
}
利用ThreadLocal保存connection对象 package conn;
import java.sql.Connection; import java.sql.SQLException;
/** * @author sfluo * * TODO To change the template for this generated type comment go to Window - * Preferences - Java - Code Style - Code Templates */ public class ConnectionManage { private static ThreadLocal currentConn = new ThreadLocal();
public static Connection currentConnection() {
Connection conn = (Connection) currentConn.get(); if (conn == null) { conn = DBUtil.getConnection(); currentConn.set(conn); openTransaction(); } return conn; }
public static void closeConnection() { try { Connection conn = (Connection) currentConn.get(); currentConn.set(null); if (conn != null) { conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }
}
public static void openTransaction() { try { Connection conn = currentConnection(); conn.setAutoCommit(false); conn.setTransactionIsolation(2); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }
}
public static void commit() { try { Connection conn = currentConnection(); if (conn != null) conn.commit(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }
}
public static void roolback() { try { Connection conn = currentConnection(); if (conn != null) conn.rollback(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }
}
}
被简化的dao实现 package conn;
import java.sql.PreparedStatement;
/** * @author sfluo * * TODO To change the template for this generated type comment go to Window - * Preferences - Java - Code Style - Code Templates */ public class DaoA {
public static final String sql = "insert into t_user_bnas (id_globalsession,id_dispseq) values('11200409220000001279','1100')";
void createData() throws Exception { PreparedStatement pstmt = ConnectionManage.currentConnection().prepareStatement(sql);
pstmt.execute();
pstmt.close();
}
}
package conn;
import java.sql.Connection; import java.sql.PreparedStatement;
/** * @author sfluo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class DaoB { Connection conn;
DaoB() { this.conn = ConnectionManage.currentConnection(); }
public static final String sql = "update t_user_bnas set id_1dispseq='1111' where id_globalsession='11200409220000001279'";
void createData() throws Exception { PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.execute();
pstmt.close();
} } 测试例子 package conn;
/** * @author sfluo * * TODO To change the template for this generated type comment go to Window - * Preferences - Java - Code Style - Code Templates */ public class Test {
public static void main(String args[]) { Test test = new Test(); test.testMethod(); }
DaoA daoA = new DaoA();
DaoB daoB = new DaoB();
void testMethod() {
try {
daoA.createData(); daoB.createData(); } catch (Exception e) {
ConnectionManage.roolback();
} finally { ConnectionManage.closeConnection();
} }
} 是不是很爽啊,:) 
|