3.3 数据库连接池
3.3.1 概念
其实就是一个容器(集合),存放数据库连接的容器。
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
好处
- 节约资源
- 用户访问高效
3.3.2 实现
- 标准接口:
DataSource
===>javax.sql
包下的
方法:
- 获取连接:
getConnection()
- 归还连接:
Connection.close()
。如果连接对象Connection
是从连接池中获取的,那么调用Connection.close()
方法,则不会再关闭连接了。而是归还连接
一般我们不去实现它,有数据库厂商来实现
C3P0
:数据库连接池技术
Druid
:数据库连接池实现技术,由阿里巴巴提供的
3.3.3 C3P0:数据库连接池技术
步骤:
导入jar包 (两个) c3p0-0.9.5.2.jar
、mchange-commons-java-0.2.12.jar
,
定义配置文件:
- 名称:
c3p0.properties
或者c3p0-config.xml
- 路径:直接将文件放在src目录下即可。
创建核心对象——数据库连接池对象ComboPooledDataSource
获取连接:getConnection
代码:
1 2 3 4
| DataSource ds = new ComboPooledDataSource();
Connection conn = ds.getConnection();
|
3.3.4 Druid:数据库连接池实现技术,由阿里巴巴提供的
步骤
- 导入jar包
druid-1.0.9.jar
- 定义配置文件:
- 是properties形式的
- 可以叫任意名称,可以放在任意目录下
- 加载配置文件。Properties
- 获取数据库连接池对象:通过工厂来来获取
DruidDataSourceFactory
- 获取连接:
getConnection
代码
1 2 3 4 5 6 7 8
| Properties pro = new Properties(); InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties"); pro.load(is);
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
Connection conn = ds.getConnection();
|
定义工具类
- 定义一个类 JDBCUtils
- 提供静态代码块加载配置文件,初始化连接池对象
- 提供方法
- 获取连接方法:通过数据库连接池获取连接
- 释放资源
- 获取连接池的方法
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| public class JDBCUtils { private static DataSource ds ; static{ try { Properties pro = new Properties(); pro.load(JDBCUtils.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(Statement stmt,Connection conn){
close(null,stmt,conn); }
public static void close(ResultSet rs , Statement stmt, Connection conn){ if(rs != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(stmt != null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } }
if(conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }
public static DataSource getDataSource(){ return ds; }
}
|
本文标题:第四部分 第三章 3 数据库连接池
文章作者:foreverSFJ
发布时间:2019-08-22 19:15:49
最后更新:2019-08-22 19:15:49
原始链接:Notes/Java/JavaWeb/03_3 数据库连接池.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!