JDBC连接池&DBUtils

来源:互联网 发布:淘宝店运营方案论文 编辑:程序博客网 时间:2024/06/08 04:38

连接池的作用:提高代码执行效率。

实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术,来共享连接Connect。


内容:

使用 DBCP、C3P0连接池,完成基本数据库的操作。

使用DBUtils完成增、删、改、查的操作。

目标:

1、学会DBCP、C3P0 配置文件的编写,和数据源DataSource的创建。

2、能够使用JDBC简化工具包DBUtils完成单表的增删改查操作。

3、可以用语言描述DBUtils底层原理。

用池来管理Connection,这样可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象,当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection ,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。

Java为数据库连接池提供了公共的接口:java.sql.DataSource,各个厂商需要让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池。

常见的连接池:DBCP、C3P0。

自定义连接池的编写

实现自定义连接池需要导入的包(javax.sql.DataSource、)。

1、创建1个容器用于存储Connection对象。private  static  LinkedList<Connection> pool=new LinkedList<Connection>();

2、创建5个连接放到容器中去。

static {

for(int i=0;i<5;i++){

Connection conn=JDBCUtil.getConnection();

pool.add(conn);

 }


 }

//重写获取连接的方法

@Override

public  Connection  getConnection()  throws SQLException{

Connection  conn=null;

//3.使用前先判断

if(pool.size() ==0){

//4、池子里面没有,我们再创建一些

for(int i=0;i<5;i++){

conn=JDBCUtils_V3.getConnection();

pool.add(conn);

 }

 }

//5、从池子里面获取一个连接对象Connection

conn=pool.remove(0);

return conn;

 }


归还连接对象到连接池中去

public void backConnection(Connection conn){

pool.add(conn);

 }


C3P0连接池

C3P0开源免费的连接池!目前使用它的开源项目有:Spring、Hibernate等。使用第三方工具需要导入jar包,c3p0使用时还需要添加配置文件c3p0-config.xml。

创建ComboPooledDataSource 对象。

ComboPooledDataSource  dataSource = new ComboPooledDataSource();//加载默认的配置

ComboPooledDataSource dataSource= new ComboPooledDataSource("itheima");//加载有名称的配置。

DBCP连接池

DBCP也是一个开源的连接池,时Apache Common成员之一,在企业开发中也比较常见,tomcat内置的连接池。需要引入DBCP和pool两个jar包。

在增加、删除、修改等操作中有很多相同的代码,只有少部分的不同。对于那些不同的地方,我们使用传参的方式来解决!DBUtil就是使用这个方式来解决。

如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们采用appache commons组件的一个成员:DBUtils。

DBUtils就是JDBC的简化开发工具包。需要使用技术:连接池(获得连接),SQL语句都没有少。

在增加、删除、修改等操作中,有很多相同的代码,只有少部分的不同。对于那些不同的地方,我们使用传参的方式来解决。

相关知识:

JavaBean组件

JavaBean就是一个类,在开发中常用于封装数据。具有如下特性。

1、需要实现接口:java.io.Serializable,通常偷懒省略了。

2、提供私有字段:private  类型  字段名;

3、提供getter/setter方法

4、提供无参构造。


DBUtils是java 编程中的数据库操作非常实用的工具。小巧简单实用

DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

DBUtils三个核心功能介绍

1、QueryRunner中提供对sql语句操作的API

2、ResultSetHandler接口,用于定义 select操作后,怎样封装结果集。

3、DBUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法。

QueryRunner核心类

QueryRunner(DataSource  ds),提供数据源(连接池),DBUtils底层自动维护连接connection

update(String sql, Object ...params ),执行更新数据。增删改

query(String sql,ResultSetHandler<T>  rsh, Object ... params),执行查询


//1.创建核心类QueryRunner

QueryRunner  qr = new  QueryRunner( C3P0Utils.getDataSource() );

//2.编写SQL语句

String  sql="insert  into  tel_user  values(null,?,?)";

//3.为占位符设置值

Object[] params = {"余淮",“耿耿”};

//4.执行添加操作(改和删类似)
int  rows=qr.update(sql,params);

if(rows > 0){

System.out.println("添加成功");

 }else{

System.out.println("添加失败");

 }

//2、执行删除所有操作

1.获取核心类queryRunner

QueryRunner  qr=new  QueryRunner(  C3P0Utils.getDataSource()  );

//填写sql语句

String  sql="select  *  from  tel_user";

//3.执行查询操作

List<User>  users  =  qr.query(sql, new  BeanListHandler<User>(User.class)  );

//4.对结果集集合进行遍历

for(User  user:users){

System.out.println(user.getUname()  + ":" + user.getUpassword() );

 }

原创粉丝点击