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的用法(小程序)
最新推荐文章于 2025-07-17 19:29:14 发布
本文介绍了一种使用ThreadLocal管理数据库连接的方法,通过ConnectionManager类实现线程安全的数据库连接获取与关闭,确保每个线程拥有独立的连接资源。
680

被折叠的 条评论
为什么被折叠?



