一、什么是连接池
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
二、连接池的特点
作用:连接池是将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建连接和销毁连接的过程。这样性能上得到了提高。
连接池放了 N 个 Connection 对象,本质上放在内存当中,在内存中划出一块缓存对象,应用程序每次从池里获得 Connection 对象,而不是直接从数据里获得,这样不占用服务器的内存资源。
问题:如果不使用连接池会出现的情况?
①.占用服务器的内存资源
②.导致服务器的速度非常慢
三、连接池步骤
1.导入连接池相应的 JAR 包;
2.生成 proxool 数据库连接池的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
<proxool>
<!-- 数据库的别名 -->
<alias>xml-student</alias>
<driver-url>jdbc:mysql://localhost:3306/数据库名称</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="root"/>
<property name="password" value="root"/>
</driver-properties>
<maximum-connection-count>10</maximum-connection-count>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
</something-else-entirely>
3.在 web.xml 文件中配置 proxool 数据库连接池实例。主要完成在服务器启动的时候就完成连接池的实例化,比如监听请求创建连接,读取配置信息等等操作。
<!-- 1.配置数据库连接池 -->
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<!-- 当web容器启动的时候实例化当前的Servlet -->
<load-on-startup>1</load-on-startup>
</servlet>
4.修改 DbUtil ,修改请求数据库连接的方式。
conn = DriverManager.getConnection("proxool.别名");