import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* 采用ThreadLocal封装Connection
* @author Administrator
*
*/
public class ConnectionManager {
private static ThreadLocal<Connection> connectionHolder = new ThreadLocal<Connection>();
public static Connection getConnection(){
Connection conn = connectionHolder.get();
//如果当前线程中没有绑定相应的Connection
if(conn == null){
try {
JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
Class.forName(jdbcConfig.getDirverName());
conn = DriverManager.getConnection(jdbcConfig.getUrl(), jdbcConfig.getUserName(), jdbcConfig.getPassword());
//将Connection设置到线程变量中
connectionHolder.set(conn);
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new ApplicationException("系统错误,请联系系统管理员!");
} catch (SQLException e) {
e.printStackTrace();
throw new ApplicationException("系统错误,请联系系统管理员!");
}
}
return conn;
}
public static void closeConnection(){
Connection conn = connectionHolder.get();
if(conn != null){
try {
conn.close();
//从ThreadLocal 中清除Connection
connectionHolder.remove();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
ThreadLocal的用法(小程序)
最新推荐文章于 2023-03-16 09:14:49 发布