数据库连接池

1. 数据库连接池

  数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。连接池的作用是降低建立和关闭数据库连接所产生的系统开销,提高应用程序的性能。

2. 连接池工作原理

  • 在系统初始化时,将数据库连接作为对象存储在内存中。

  • 当用户需要访问数据库时,先检查连接池是否有空闲连接。如果有,分配一个空闲连接。如果没有,再检查连接池是否达到最大连接数。如果没有,则新建一个连接。如果达到最大连接数,则在等待队列中进行等待。如果连接请求超过最大等待时间,则抛出异常。

  • 使用完毕后,将连接放回连接池中。

3. 连接池主要参数

  • 最大连接数:可以同时从连接池分配的数据库连接的最大值。

  • 最大空闲连接数:连接池一直保持的数据库连接的最大值。

  • 最小空闲连接数:连接池一直保持的数据库连接的最小值。

  • 初始化连接数:连接池启动时,建立的初始连接数。

  • 最大等待时间:连接池无可用连接时,等待从连接池取出连接的最大时间,单位毫秒。

4. 常用连接池

  DBCP(DataBase connection pool,数据库连接池)是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。使用 DBCP 需要2个包:commons-dbcp.jar,commons-pool.jar

  C3P0 是一个开源的JDBC连接池,它实现了数据源和JNDI绑定。目前使用它的开源项目有Hibernate,Spring等。

  Druid 是阿里巴巴开源平台上数据库连接池的实现,还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser。可以监控连接池和SQL的执行情况。

5. JDBC

  JDBC(Java DataBase Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,由一组用Java语言编写的类和接口组成。

  • DriverManager:管理数据库驱动程序,通过驱动建立与数据库的连接。

  • Connection:与数据库的连接,是一个会话对象。

  • Statement:此接口用于将SQL语句发送到数据库。

  • ResultSet:使用 Statement 对象执行 SQL 查询后,该对象保存检索的数据。

  • SQLException:处理数据库程序中发生的任何异常。

  简单地说,JDBC 可做三件事:与数据库建立连接,发送SQL语句到数据库,处理结果。
Connection con = DriverManager.getConnection("url","username","password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
  int x = rs.getInt("a");
  String s = rs.getString("b");
  float f = rs.getFloat("c");
}

  Java 为数据库连接池提供了公共接口 javax.sql.DataSource,用连接池来管理 Connection 。

posted @ 2019-09-25 10:28  PIPO2  阅读(419)  评论(0编辑  收藏  举报