一:连接池概述
1)开发背景:
实际开发中呢,每次获取Connection和释放掉都是消耗系统资料的两个过程。所以我们采用连接池技术,来“共享”这些Connection。
2)概述
用pool来管理Connection这样我们便可以重复使用这些Connection。并且使用时直接获取,用完后,调用改写的(@Override)close方法也不会真正的关闭Connection,而是把这些Connection放回pool中,实现pool中对象的反复利用。private static LinkedList
3)规定(规范)
Java为数据库连接池提供了interface :javax.sql.DataSource,实现这个接口才能使用连接池 public class MyDataSource implements DataSource {}一般常用的连接池有DBCP,C3P0
二: Jdbc工具类——JdbcUtils
1)作用:
获取Connection对象,开启和关闭事务,所以这个工具类用到连接mysql的驱动jar包,涉及c3p0连接池,所以还需要导入c3p0的jar包,以及c3p0-config.xml配置文件
(2)C3P0Utils中的方法与内容
先写一个静态的代码块来加载配置文件的信息,然后书写获取连接和释放资源的方法
C3P0提供一个核心的工具类 叫做ComboPooledDataSource,使用连接池的话必须创建其对象。
new ComboPooledDataSource(里面是config的name),不填则是默认配置,及
(3)DBCP连接池(了解即可)
DBCP也是一个连接池,Tomcat内置的连接池
涉及的jar包:
同理,DBCP也需要配置文件
里面包含:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/“Database name”?useUnicode=true&characterEncoding=utf8
username=root
password=root
同理工具类代码如下:
1.静态代码块里:
先通过类加载器加载出一个properties文件的输入流 InputStream
然后通过Properties对象来加载(运行)这个输入流 props.load(is)
最好创建出一个新的数据源存储Connection。
dataSource = BasicDataSourceFactory.createDataSource(props);
2.方法:
(1)获取数据源(pool)的方法 getDataSource()
(2)获取Connection的方法 getConnection()
三:测试(使用)C3P0 DBCP连接池
案例:使用C3P0或DBCP连接池 添加数据
使用C3P0Utils先获取连接 getConnection 然后更新操作。
同理DBCPUtils.getConnection();获取连接,然后操作。
四:DBUtils
使用JDBC你会发现 代码太过多余,每次操作多会有很多相同的操作。
而DBUtils则是JDBC简化的开发工具包,其中需要使用的技术有:连接池(获得连接),SQL语句也不能少。
它封装了对JDBC的操作并且简化了其操作,可以少写代码。
一个概念——–JavaBean组件
JavaBean是一个类,用来封装数据,提供有getter setter方法。
DButils 三个核心功能介绍
QueryRunner 中提供了对sql语句操作的API
ResultSetHandler接口 ,用于定义select(查询)操作后,怎么封装结果集
DbUtils类,工具类,定义了处理方法。
(1)QueryRunner 核心类:
提供了数据源 QueryRunner (DataSource ds),及连接池,DBUtils底层自动维护和连接Connection
update(String sql,Object …params),执行更新的数据。
params是为占位符所设置值的集合
例如Object[] params = { “username”, “password” };
query(String sql,ResultSetHandler
例如List
而BeanListHandler是上面ResultSetHandler的结果集处理类,作用是将每一条(因为是查询操作)记录封装到指定的javabean里面,将这些javabean再封装到List集合里。
BeanHandler只是将第一条记录装到指定javabean里面(前面加List则循环往复)。
(2)DBUtils工具类
closeQuirty(Connection conn)关闭连接
commitAndCloseQuiety(Connection conn)提交并关闭连接
rollbackAndCloseQuiety(Connection conn)回滚并关闭