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() );
}
- JDBC连接池&DBUtils
- JDBC连接池&DBUtils
- Day11-JDBC连接池&DBUtils
- (五)JDBC连接池&DBUtils—DBUtils完成CRUD
- JDBC之事务、连接池、dbutils
- JDBC、事物、连接池、DBCP、C3P0、DBUtils
- JDBC之事务、连接池、dbutils
- (一)JDBC连接池&DBUtils—自定义连接池
- JDBC dbutils以及c3p0 dbcp连接池的使用
- (三)JDBC连接池&DBUtils—C3P0的使用
- Jdbc基础 工具类 连接池到dbutils
- JDBC连接和DBUtils的使用详解
- 连接池&DBUtils
- DBUtils和连接池
- JDBC、事务、数据库连接池、DBUtils
- (二)JDBC连接池&DBUtils—自定义连接池增强方法
- (四)JDBC连接池&DBUtils—DBCP连接池的使用
- Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用
- python使用技巧1
- 函数调用栈
- HBase 总结(五)
- 分布式与集群
- CSS3 2 2D 3D转换
- JDBC连接池&DBUtils
- jquery对象数值步进显示效果
- 获取post请求的数据
- PL/SQL 游标(cursor)的使用
- C_逻辑题: 石头,剪刀,布
- Java 8 Function之Predicate
- 分布式事务
- 证明题 8.10
- css三种书写格式以及import与link的区别