连接池技术
数据库连接池的基本原理
基本原理:
在内部对象池中维护一定数量的数据库连接, 并对外暴露数据库连接获取和返回方法。如: 外 部使用者可通过getConnection 方法获取连接,使 用完毕后再通过releaseConnection 方法将连接返 回,注意此时连接并没有关闭,而是由连接池管 理器回收,并为下一次使用做好准备。
username
传递给JDBC驱动的用于建立连接的用户名
password
传递给JDBC驱动的用于建立连接的密码
url
传递给JDBC驱动的用于建立连接的URL
driverClassName
使用的JDBC驱动的完整有效的java 类名
initialSize
0
初始化连接:连接池启动时创建的初始化连
接数量,1.2版本后支持
maxWait
无限
最大等待时间:当没有可用连接时,连接池等
待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设
置为-1表示无限等待
Tomcat自带连接池的使用
4.在程序中使用已配置的连接池获得 Connetion对象
DataSource ds = null; Connection con = null; Context c = new InitialContext(); ds = (BasicDataSource)c.lookup("java:
Tomcat自带连接池的配置
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/daolu"
type="javax.sql.DataSource "
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.5.253:1521:tarena"
username=“openlab"
password=“open23"
maxActive="40"
maxIdle="2“
minIdle=“1”
maxWait="50置参数含义
资源重用
由于数据库连接得到重用,避免了频繁创建、 释放连接引起的大量性能开销。
更快的系统响应速度
数据库连接池在初始化过程中,往往已经创建 了若干数据库连接置于池中备用。此时连接的初 始化工作均已完成。对于业务请求处理而言,直 接利用现有可用连接,避免了数据库连接初始化 和释放过程的时间开销,从而缩减了系统整体响 应时间。
数据库连接池的基本原理
连接池的管理
当客户请求数据库连接时,首先查看连接池中是否有空闲 连接(指当前没有分配出去的连接)。如果存在空闲连接, 则把连接分配给客户并作相应处理(即标记该连接为正在 使用,引用计数加1)。如果没有空闲连接,则查看当前 所开的连接数是不是已经达到maxConn(最大连接数), 如果没达到就重新创建一个连接给请求的客户;如果达到 就按设定的maxWaitTime(最大等待时间)进行等待,如 果等待maxWaitTime后仍没有空闲连接,就抛出无空闲连 接的异常给用户。
使用数据库连接池的优势
新的资源分配手段
对于多应用共享同一数据库的系统而言,可在应用层 通过数据库连接的配置,实现数据库连接池技术。某一应 用最大可用数据库连接数的限制,避免某一应用独占所有 数据库资源。
统一的连接管理,避免数据库连接泄漏
在较为完备的数据库连接池实现中,可根据预先的连 接占用超时设定,强制收回被占用连接。从而避免了常规 数据库连接操作中可能出现的资源泄漏 。
maxActive 8 最大活动连接:连接池在同一时间能够分配的
最大活动连接的数量, 如果设置为非正数则表示不限制
maxIdle
8
最大空闲连接:连接池中容许保持空闲状态的最
大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制
minIdle
0
最小空闲连接:连接池中容许保持空闲状态的最
小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建
/comp/env/jdbc/daolu"); con = ds.getConnection();
当客户释放数据库连接时,先判断该连接的引用次数是否 超过了规定值,如果超过就删除该连接,并判断当前连接 池内总的连接数是否小于minConn(最小连接数),若小 于就将连接池充满;如果没超过就将该连接标记为开放状 态,可供再次复用。可以看出正是这套策略保证了数据库 连接的有效复用,避免频繁地建立、释放连接所带来的系 统资源开销。
连接池技术
JDBC 访问数据库步骤
开始
导入 java.sql包 加载并注册驱动程序
创建一个 Connection 对象
创建一个 Statement 对象
执行语句
关闭连接 关闭Statement对象 关闭ResultSet 对象 使用ResultSet对象
结束
JDBC中的类
使用数据库连接池的优势