关于数据库连接池和动态数据源的实现、使用
对于一个简单的数据库应用,由于数据库的访问不是很频繁。这时可以很简单地
在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样就不会带来更多的性能
上的开销。但是对于复杂的数据库应用,情况就完全不同了。频繁的建立、关闭连接,会
极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。这就意味我们需要去
考虑怎样把一个连接多次使用。
连接复用,通过建立数据库的连接池以及一套连接使用的管理策略,使得一个数
据库连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭给系统带来的开
销。
外部使用者可以通过 getConnection 方法获取连接,使用完毕之后再通过 releaseConnection
方法将连接返回,注意此时的连接并没有关闭,而是由连接池管理器回收,并为下一次使
用做好准备。
一般的数据库连接池,是使用配置文件在项目启动的使用加载配置文件,根据文
件中描述,生成对应的数据库连接池。连接池有许多的属性 比如:连接池的初始化连接处、
连接池的最大连接数、每次的自增连接数、最大空闲连接数等等
数据库连接池技术带来的优势:
1. 资源重用
由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在
减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎
片以及数据库临时进程/线程的数量)
2. 更快的系统响应速度
数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用,
此时连接的初始化工作均已完成,对于业务处理而言,直接利用现有的可以连接,
避免了数据库连接初始化和释放过程的时间开销,从而缩短了系统整体的响应时
间。
3.统一的连接管理,避免数据库连接泄露
在较为完备的数据库连接池实现中可以根据预先的连接占用超时设定,强制回收
被占用的连接。从而避免常规数据库连接操作中可能出现的资源泄露。
一个数据库连接池的实现
1. 前言
数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助。但如
果 对 数 据 库 资 源 没 有 很 好 地 管 理 ( 如 : 没 有 及 时 回 收 数 据 库 的 游 标
(ResultSet)、Statement、连接 (Connection)等资源),往往会直接导致系统的稳定。这类
不稳定因素,不单单由数据库或者系统本身一方引起,只有系统正式使用后,随着流
量、用户的增加,才会逐步显露。
在基于 Java 开发的系统中,JDBC 是程序员和数据库打交道的主要途径,提供了完备的
数据库操作方法接口。但考虑到规范的适用性,JDBC 只提供了最直接的数据库操作规