轻量级Java EE企业应用开发实战
上QQ阅读APP看书,第一时间看更新

5.6 理解连接池技术

在实际应用开发中,特别是在Web应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,那么每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一项既消耗资源又费时的工作,如果频繁发生这种数据库操作,那么系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题常用的方法。

数据库连接池的主要操作如下:

  • 建立数据库连接池对象。
  • 按照事先指定的参数创建初始数量的数据库连接(空闲连接数)。
  • 对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(最大活跃连接数),就创建一个新的数据库连接。
  • 存取数据库。
  • 关闭数据库,释放所有数据库连接(此时的关闭数据库连接并非真正关闭,而是将其放入空闲队列中。若实际空闲连接数大于初始空闲连接数,则释放连接)。
  • 释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。

在Java领域,有非常多的开源数据库连接池工具,比如C3P0、Proxool、DBCP、DBPool、Druid等。接下来会对DBCP的用法进行详细的介绍。