【无标题】

day12
数据库链接池与DBUtil工具
一、数据库连接池
在JDBC编程中,每次创建和断开Connection对象都会消耗一定的时间和IO资源。这是因为Java程序与数据库之间建立连接时,数据库端要验证用户名和密码,并且要为这个连接分配资源,JAVA程序则要把代表连接的 java.sql.Connection对象加载到内存中,所以建立数据连接的开销很大,尤其是在大量的并发访问时。假如某网站一天的访问量是10万,那么该网站的服务器就需要创建,断开连接10万次,频繁地创建,断开数据库连接势必会影响数据库的访问效率,甚至导致数据库的崩溃。
为了避免频繁地创建数据库连接,数据库连接池技术应运而生。数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用现有的数据库连接,而不是重新建立。
二、DataSource接口
为了获取数据库连接对象,JDBC提供了javax.sql.DataSource接口,它负责与数据库建立连接,并定义了返回值为Connection对象的方法,具体如下:
1.Connection getConnection()
2.Connection getConnection(String username,String password)
三、DBCP数据源
DBCP是数据库连接池的简称,是Apache组织下的开源连接池的实现,也是Tomcat服务器使用的连接池组件。单独使用DBCP数据源时,需要在应用程序中导入两个JAR包,具体如下:
1.commons-dbcp.jar包
commons-dbcp.jar包:是DBCP数据源的实现包,包含所有操作数据库连接信息和数据库连接池初始化信息的方法,并实现了DataSource接口的getConnection()方法
2.commons-pool.jar包
commons-pool.jar包:是DBCP数据库连接池实现包的依赖包,为commons-dbcp.jar包中的方法提供了支持。可以这么说,没有该依赖包,commons-dbcp.jar包中的很多方法就没有办法实现

通过BasicDataSource类直接创建数据源对象
在使用BasicDataSource类创建对象时,需要手动给数据源对象设置属性值,然后获取数据库连接对象
(1)在Eclipse 中创建一 个名称为chapter10 的Web项目,在项目chapter10 中导入mysql-connector-java-5.0.8-bin.jar、commons-dbcp-1.4.jar以及commons- pool- 1.6.jar 3个JAR包,并发布到类路径下,然后在项目的src目录下创建包cn.itcast.chapter10.example,并在该包下创建一个example01类,该类采用手动方式获取数据库的连接信息和数据源的初始化信息
在这里插入图片描述
在这里插入图片描述
通过读取匹配置文件创建数据源对象
(1)在chapter10项目的src目录下创建dbcpconfig.properties 文件,该文件用于设置数据库的连接信息和数据源的初始化信息。
(2)在cn.itcast.chapter10.example,并在该包下创建一个example02类,该类中采用了从配置文件中获取数据库的连接信息和数据源的初始化信息的方式
在这里插入图片描述
C3PO数据源
C3PO是目前最流行的开源数据库连接池之一,它实现了DataSource 数据源接口,支持JDBC2和JDBC3的标准规范,易于扩展并且性能优越,著名的开源框架Hibernate和Spring都支持该数据源。在使用C3PO数据源开发时,需要了解C3PO中DataSource接口的实现类ComboPooledDataSource,它是C3P0的核心类,提供了数据源对象的相关方法 。

1.通过ComboPooledDataSource()构造方法创建数据源对象
使用ComboPooledDataSource()构造方法创建数据源对象,需要手动给数据源对象设置属性值,然后获取数据库连接对象,具体步骤如下。
( 1 )在项目chapter10中导入JAR包c3p0- -0.9.1.2.jar, 然后在cn.itcast.chapter 10.example包下创建一个example03类,该类采用C3P0数据源手动代码的方式获取Connection对象。

在这里插入图片描述
在这里插入图片描述
通过读取配置文件创建数据源对象
( 1 )在src根目录下创建一个c3p0-config xml文件,用于设置数据库的连接信息和数据源的初始化信息。在这里插入图片描述
(2)在cn.itcast.chapter10.example包下创建一个Example04类,该类中使用C3P0数据源从配置文件中获取Connection对象。
在这里插入图片描述
DBUtils工具
1.介绍DBUtils工具
DBUtils工具核心是org.apache.commons.dbutils.QueryRunner类和org.apache.commons.dbutils.ResultSetHandler接口
2 .QueryRunner类
QueryRunner类提供了带有一个参数的构造方法,该方法以javax.sql.DataSource作为参数传递到QueryRunner的构造方法中来获取Connection对象。针对不同的数据库操作,QueryRunner类提供了几种常见的方法,具体如下:
(1)query(String sql,ResultSetHandler rsh,Object…params)方法
该方法用于执行查询操作,它可以从提供给构造方法的数据源DataSource或使用的setDataSource()方法中获得连接
(2)update(String sql,object…params)方法
该方法用于执行插入,更新或者删除操作,其中,参数params表示SQL语句中的置换参数
(3)update(String sql)方法
该方法用来执行插入,更新或者删除操作,它不需要置换参数
在chapter10项目的cn.itcast chapter10. example包中创建-一个名为BaseDao的类,该类中编写了一个通用的查询方法
在这里插入图片描述
在cn.itcast.chapter 10.example包下创建实体类User, 使用该类来封装User对象
在这里插入图片描述
在cn.itcast.chapter10.example 包下创建类ResultSetTest1, 该类用于演示BeanHandler类对结果集的处理,在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值