一、什么是数据库连接池
数据库连接池(Database Connection Pooling)在程序初始化时创建一定数量的数据库连接对象并将其保存在一块内存区中,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接以避免因为没有释放数据库连接而引起的数据库连接遗漏。
即在程序初始化的时候创建一定数量的数据库连接,用完可以放回去,下一个在接着用,通过配置连接池的参数来控制连接池中的初始连接数、最小连接、最大连接、最大空闲时间这些参数保证访问数据库的数量在一定可控制的范围类,防止系统崩溃,使用户的体验好
二、DataSource接口
ataSource 接口由驱动程序供应商实现。共有三种类型的实现:
基本实现 - 生成标准的 Connection 对象
连接池实现 - 生成自动参与连接池的 Connection 对象。此实现与中间层连接池管理器一起使用。
分布式事务实现 - 生成一个 Connection 对象,该对象可用于分布式事务,大多数情况下总是参与连接池。此实现与中间层事务管理器一起使用,大多数情况下总是与连接池管理器一起使用。
三、DBCP数据源
需要的jar:
commons-dbcp.jar
commons-pool.jar
1.通过BasicDataSource类直接创建数据源对象
创建一个为Example01的类来采取手动方式来获取数据库的连接信息和数据源的初始信息
通过读取配置文件创建数据源对象
除了使用BasicDataSource直接创建数据源对象外,还可以使用工厂类读取配置文件,来创建数据源对象,然后获取数据库连接对象。
创建一个为dbcpconfig的文件来设置数据库的连接信息和数据源的初始化信息
然后在创建一个名为Example02的类来进行从配置文件中获取数据库的连接信息和数据源的初始化信息方式。
ResultSetHandler接口
用于处理ResultSet结果集,它开源将结果的数据转化为不同形式。
.///BeanHandler:将结果集中的第一行封装到一个对应的javaBean中
./// BeanLisHandler:将结果集中的每一行都封装到对应的JavaBaean中
.///ScalarHandler:将结果集中的数据存储成Object对象
创建一个为BaseDao的类来编写一个查询方法
创建一个User的类来封装User对象
创建一个为ResultSetTest1的类来对Handler的类对集的处理
创建一个为ResultSetTest2类用于BeanlisHandler类UI结果集的处理
四、C3P0数据源
c3p0是目前最流行的开源数据库连接池之一。
当使用c3p0时,可以使用CombopooledDataSource()的有参和无参构方法;
或者通过读取配置文件创建数据源对象。
1.构造方法:
2.读取配置文件
文件名称:必须叫c3p0-config.xml或c3p0.properties
文件位置:必须在src下,当传入的configName值为空或不存在时,使用默认的配置文件创建数据源。
测试: