数据库连接池

简介

  1. 概念:是一个集合容器,存放数据库连接的容器
    1
    2
    '当系统初始化好后,容器被创建,容器会申请一些连接对象,
    当用户来访问数据库时,从容器中获取连接对象,用户访问之后,会将对象归还给容器'
  2. 好处:
    1. 节约资源
    2. 用户访问高效
  3. 实现:
    1. 标准接口:在java.sql包下的DataSource
      • 获取连接:getConnection()
      • 归还连接:Connection.close()。如果连接对象是Connection是从连接池或取的,那么调用Connection.close()方法,则不是关闭连接而是归还连接
    2. 数据库厂商实现的连接池:
      • C2P0
      • Druid:阿里巴巴提供

C3P0

  • 步骤:
    1. 导入c3p0-0.9.5.2.jarmchange-commons-java-0.2.12.jarmysql-connector-java-5.1.47.jar
    2. 定义配置文件:
      • 名称:c3p0.properties 或者 c3p0.config.xml
      • 路径:直接将文件放在src目录下
    3. 创建核心对象:数据库连接池对象ComboPooledDataSource
    4. 获取连接:getConnection
      1
      2
      3
      4
      5
      6
            1.'创建数据库连接池对象'
      DataSource dataSource = new ComboPooledDataSource();
      2.'获取连接对象'
      Connection conn = dataSource.getConnection();
      3.'打印'
      System.out.println(conn);

Druid

  1. 步骤:
    1. 导入druid-1.1.10.jar
    2. 定义配置文件:
      • properties形式的
      • 可以叫任意名称,可以放在任意目录
    3. 加载配置文件:使用Properties
    4. 获取数据库连接池对象:通过工厂类来获取,DruidDataSourceFactory
    5. 获取连接:getConnection
  2. 定义工具类
    1. 定义一个类 JDBCUtil
    2. 提供静态代码块加载配置文件,初始化连接池对象
    3. 提供方法:
      • 获取连接方法:通过数据库连接池获取连接
      • 释放资源
      • 获取连接池的方法
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
// 创建一个DruidDataSource对象
DruidDataSource druidDataSource = new DruidDataSource();
//驱动名
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
//数据库地址
druidDataSource.setUrl("jdbc:mysql://127.0.0.1:3306/mysql?useSSL=true&characterEncoding=UTF-8");
//用户名
druidDataSource.setUsername("root");
//密码
druidDataSource.setPassword("root");

"以下为非必填项,不设置也有默认值"

"最小连接池数量 可设置最大值"
druidDataSource.setMinIdle(1);

"初始化时建立物理连接的个数"
druidDataSource.setInitialSize(1);

"最大连接池数量"
druidDataSource.setMaxActive(10);

"获得连接最大等待时间 单位毫秒"
druidDataSource.setMaxWait(10000);

"配置一个连接在池中最小生存的时间,单位是毫秒"
druidDataSource.setMinEvictableIdleTimeMillis(300000);

"获得连接"
Connection conn = druidDataSource.getConnection();

"归还连接"
Conn.close();

"关闭连接池"
druidDataSource.close();

相关文章

SpringIOC

Junit和Spring

SpringAOP

Tomcat

Servlet

Request,Response和ServletContext

Cookie和Session

JSP和EL和Jstl

Filter和Listener

Mybatis