连接池技术的使用:
1、连接池概述
概念:
连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。
好处:
减少连接创建时间
虽然与其它数据库相比 GBase 提供了较为快速连接功能,但是创建新的 JDBC 连接仍会招致
网络和 JDBC 驱动的开销。如果这类连接是“循环”使用的,使用该方式这些花销就可避免。
简化的编程模式
当使用连接池时,每一个单独的线程能够像创建了一个自己的 JDBC 连接一样操作,允许用
户直接使用JDBC编程技术。
受控的资源使用
如果用户不使用连接池,而是每当线程需要时创建一个新的连接,那么用户的应用程序的资
源使用会产生非常大的浪费并且可能会导致高负载下的异常发生
2、连接池的实现原理:
数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个集合对象中,一旦
数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经
建立的数据库连接,可以极大地节省系统资源和时间。
3、连接池的操作步骤:
数据库连接池的主要操作如下:
(1)建立数据库连接池对象(服务器启动)。(mysql默认最大连接数:100,oracle默认支持最大连接数150)
(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。
(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没
有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。
(4)存取数据库。
(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入
空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。
(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
4、tomcat连接池(DBCP)的使用
* 项目中导入DBCP连接池必要的jar
* commons-dbcp-1.2.2.jar DBCP核心jar
commons-pool-1.4.jar 依赖jar,池化技术的实现
* 将mysql驱动包拷贝到tomcat\lib\目录下
* 配置连接池使用的必要参数值
拷贝tomcat\conf\context.xml到项目METE-INF目录中
添加如下配置:
<Resource
name="jdbc/mysqlconn"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/oa"
username="root"
password="root"
type="javax.sql.DataSource"
maxActive="80"
maxIdle="30"
initialSize="30"
removeAbandoned="true"
maxWait="10000"
removeAbandonedTimeout="300"
/>
<!--maxActive: 最大连接数量-->
<!--maxIdle: 最大空闲连接-->
<!--initialSize: 初始化连接-->
<!--removeAbandoned: 是否自动回收超时连接-->
<!--maxWait: 超时等待时间以毫秒为单位 1000等于60秒-->
<!--removeAbandonedTimeout: 活动连接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除-->
5、核心代码:
// 1 获取tomcat中JNDI容器
Context context = new InitialContext();
// 2 获取DataSource对象
DataSource ds = (DataSource)context.lookup("java:/comp/env/jdbc/mysqlconn");
//3 获取连接
Connection conn = ds.getConnection();
补充:
DataSource是java.sql下的一个类,可参考API
1、连接池概述
概念:
连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。
好处:
减少连接创建时间
虽然与其它数据库相比 GBase 提供了较为快速连接功能,但是创建新的 JDBC 连接仍会招致
网络和 JDBC 驱动的开销。如果这类连接是“循环”使用的,使用该方式这些花销就可避免。
简化的编程模式
当使用连接池时,每一个单独的线程能够像创建了一个自己的 JDBC 连接一样操作,允许用
户直接使用JDBC编程技术。
受控的资源使用
如果用户不使用连接池,而是每当线程需要时创建一个新的连接,那么用户的应用程序的资
源使用会产生非常大的浪费并且可能会导致高负载下的异常发生
2、连接池的实现原理:
数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个集合对象中,一旦
数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经
建立的数据库连接,可以极大地节省系统资源和时间。
3、连接池的操作步骤:
数据库连接池的主要操作如下:
(1)建立数据库连接池对象(服务器启动)。(mysql默认最大连接数:100,oracle默认支持最大连接数150)
(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。
(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没
有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。
(4)存取数据库。
(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入
空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。
(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
4、tomcat连接池(DBCP)的使用
* 项目中导入DBCP连接池必要的jar
* commons-dbcp-1.2.2.jar DBCP核心jar
commons-pool-1.4.jar 依赖jar,池化技术的实现
* 将mysql驱动包拷贝到tomcat\lib\目录下
* 配置连接池使用的必要参数值
拷贝tomcat\conf\context.xml到项目METE-INF目录中
添加如下配置:
<Resource
name="jdbc/mysqlconn"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/oa"
username="root"
password="root"
type="javax.sql.DataSource"
maxActive="80"
maxIdle="30"
initialSize="30"
removeAbandoned="true"
maxWait="10000"
removeAbandonedTimeout="300"
/>
<!--maxActive: 最大连接数量-->
<!--maxIdle: 最大空闲连接-->
<!--initialSize: 初始化连接-->
<!--removeAbandoned: 是否自动回收超时连接-->
<!--maxWait: 超时等待时间以毫秒为单位 1000等于60秒-->
<!--removeAbandonedTimeout: 活动连接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除-->
5、核心代码:
// 1 获取tomcat中JNDI容器
Context context = new InitialContext();
// 2 获取DataSource对象
DataSource ds = (DataSource)context.lookup("java:/comp/env/jdbc/mysqlconn");
//3 获取连接
Connection conn = ds.getConnection();
补充:
DataSource是java.sql下的一个类,可参考API