数据库连接池与DBUtils工具学习心得

本文介绍了数据库连接池的概念,强调其能提高数据库访问效率,详细讲解了DBCP和C3P0两种数据源的使用步骤。同时,对DBUtils工具进行了概述,解释了QueryRunner类和ResultSetHandler接口的功能,以及在实际开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库连接池与DBUtils工具
1.数据库连接池
1.1 什么是数据库连接池
1.在使用jdbc编程时,每次访问数据库都要创建新的链接对象,访问完毕后也需要断开连接(销毁对象)
比如说:网站的每日用户访问量是10万次,这时候就需要对数据库访问十万次,需要10万次创建和断开连接对象,
频繁的创建和断开连接,这是访问数据库的效率非常低。
2.数据库连接池技术:管理连接对象。
>>>1.应用程序就不需要创建和断开连接对象。而是交给数据库连接池管理
>>>2.数据库连接池断开,不是销毁对象,而是把连接对象归还给连接池
3.数据库连接池基本参数:
*初始化大小:数据库连接池里面初始的连接对象个数
*最大连接数:数据库连接池里面最大的连接对象个数
*最大等待时间:用户通过连接池获取连接对象时,所需等待时间
*最大空闲连接:数据库连接池中,访问用户趋于稳定时,最大的空闲连接个数
*最小空闲连接:在用户访问趋于顶峰时,数据库里面剩余的最小连接对象个数
4.优点:通过数据库连接池管理连接对象,减少可数据库连接对象的创建和销毁,提高数据库访问的效率
1.2DataSource 接口
数据库连接池技术:SUN公司制定数据库连接池规范,不同的数据库厂商来实现,提供自己的数据库连接方法
JDBC提供了javax.sql.DataSource接口,它负责与数据库建立连接,并定义了返回值为Connection对象的方法,具体如下:都可以用重载的方法来获取Connection对象
*Connection getConnection()
通过无参的方式与数据库建立连接
*Connection getConnection(String username,String password)
通过传入登录信息的方式建立与数据库的连接
常用的有DBCP数据源和C3P0数据源
1.3DBCP数据源
DBCP数据库连接池(DataBase Connection Pool),是由apache组织提供的数据库连接池技术
在项目开发中,使用DBPC的基本步骤:
1.导入DBCP的jar包:commons-dbcp.jar,commons-pool.jar
2.DBCP获取 连接对象:设置连接参数。
四个连接参数:driverName,url,username,pasword.
dbpc获取连接对象具体的方式:
第一种:直接使用BasicDataSouce类创建数据源对象,从而获得连接对象
第二种:通过读取配置文件创建数据源对象,从而获取连接对象
读取配置的好处:在不修改代码的情况下,可修改数据库的连接参数
1.4C3PO数据源
C3PO数据源是目前最流行的数据库连接池技术之一,他的性能更加优越,也提供了对后期数据框架hibernate很好的支持。
在项目开发中使用C3P0使用的基本步骤:
1.导入C3P0的jar包:提供C3P0的核心类和方法。
2.设置连接参数:
四个连接参数:driverName,url,username,pasword.
C3P0获取连接对象具体的方式:
第一种:通过CombPooledDataSource的构造方法获取数据源对象,从而获得连接对象
第二种:通过读取配置文件创建数据源对象,从而获取连接对象
2.DBUtils工具
1.1 DBUtils工具介绍
DBUtils是由Apache提供的,是commons组件的一员,开源免费
DBUtils是对jdbc简单封装,减少操作数据库的代码。
DBUtils使用前:需要导入DBUtils的jar包,commons-dbutils.jar包
1.2 QueryRunner类
QueryRunner类是DBUtils组件下的核心类,通常和ResultSetHandler接口配合使用,对jdbc代码进行了简单的封装,
减少操作数据库打代码量(其实就是对Connection,sql语句,PreparedStament,ResulteSet,params等进行了封装)
提供的常用方法:
1.query()方法:执行的查询语句,select
2.update()方法:执行的增删改语句:insert into ,update,delete.
1.3 ResultSetHandler接口:
ResultSetHander接口就是用来处理ResultSet结果集对象,把结果集对象里面封装的数据,转化成我们
所需要的对象或者集合。
ResultSetHander接口提供得到实现类:
*BeanHandler:把结果集中的第一行数据,封装到一个javaBean实例中。
*BeanListHandler:把结果集中的每一行数据,都封装到一个javaBean实例中,并存放到List中
ScalarHandler:把结果集里面封装的数据,转换成一个对象。
查看源码的过程:
BeanHandler将一行数据转换成javaBean对象
BeanHandler–>RowProcessor(接口)------>
BasicRowProcessor—>BeanProcessor里面的toBean()方法
1.4 ResultSetHandler实现类
1.BeanHandler和BeanListHandler:
BeanHandler作用:将一行数据转换成一个javaBean对象
BeanListHandler:遍历多行数据,将每一行数据转换成javaBean对象,添加到List集合中
2.ScalarHandler
ScalarHandler作用:将单行单列的值:转换成Object对象。
在开发中,通常使用ScalrHandler来处理聚集函数。
聚集函数:max(),main(),avg(),count(),sum()
比如:select count(
) from users,返回的结果就是单行单列的值。
1.5使用DBUtils实现增删改查
准备:创建所需数据库和表格内容
步骤:
1.创建工具类:c3p0pUtils
2.创建DBUtils实例对象
3.创建测试类:增删改查的方法
QueryRunner类的使用方式:
第一种:
QueryRunner runner = new QueryRunner();
runner.query(connection,sql,处理对象,params);
runner.update(connection,sql,处理对象,params);
第二种:
QueryRunner runner = new QueryRunner(dataSource对象);
runner.query(sql,处理对象,params);
runner.update(sql,处理对象,params);
总结:
执行insert into,update,delete都使用update方法,返回值int
执行select查询,调用query方法,返回值List,Object,Map等对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值