数据库连接池
概述:
是一个容器,用来存放数据库连接;
当系统初始化号以后,容器被创建,容器会申请一些连接对象,当用户访问数据库时,从容器中获取连接对象,访问完毕以后,将连接对象归还给容器。
好处:节约资源和提高效率。
实现
1.标准接口:DataSource javax.sql包下;
1.方法:
获取连接:getConnection();
归还连接:如果连接对象是从数据库连接池中获得的,那么调用Connection.close()方法,不 会关闭连接,而是归还给容器。
2.一般我们不去实现它,由数据库厂家去实现
1.C3P0:数据库连接池技术
2.Druid:数据库连接池实现技术,有阿里巴巴提供
C3P0
使用步骤
1.导入jar包 c3p0-0.9.5.2.jar 和 mchange-commons-java-0.2.12.jar 以及数据库驱动jar包;
2.定义配置文件:
名称:c3p0.properties 或者 c3p0-config.xml文件;
路径:放置项目下的src路径下即可。
3.创建核心对象 数据库连接池对象ComboPooledDataSource;
4.获取连接:getConnection()
Druid
使用步骤
1.导入jar包druid-1.0.9.jar;
2.定义配置文件:1.是properties形式的;2.可以为任意名称和任意路径;
3.加载配置文件 Properties;
4.获取数据库连接池对象:DruidDataSourceFactory;
5.获取连接对象 getConnection()。
定义Druid工具类
public class DruidUtils { private static DataSource ds = null; static { //加载配置文件 Properties pro = new Properties(); try { pro.load(DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties")); //获取连接池对象 ds= DruidDataSourceFactory.createDataSource(pro); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return ds.getConnection(); } public static void close(Connection conn , Statement stmt , ResultSet res){ close(conn); close(stmt); close(res); } public static void close(Connection conn , Statement stmt ){ close(conn); close(stmt); } public static void close(Connection conn ){ if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(Statement stmt ){ if (stmt!=null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close( ResultSet res){ if(res!=null){ try { res.close(); } catch (SQLException e) { e.printStackTrace(); } } } //获取连接池对象 public static DataSource getDataSourse(){ return ds; } }