JDBC连接池和dbutils
连接池的概念
用池来管理connection,这样可以重复的使用Connection。有了池就不用自己来创建connection,而是通过池来获得connection对象。java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商需要让自己的连接池实现这个接口,这样应用程序可以方便的切换不同厂商的连接池。常见的连接池有DBCP,C3P0。
C3P0连接池
c3p0是免费开源的连接池,目前使用它的开源项目有spring,hibernate等,使用第三方工具需要导入jar包,c3p0使用时需要添加配置文件c3p0-config.xml 。导入的jar包如下,一般为2个。
配置文件内容详情参考如下博客https://blog.csdn.net/caychen/article/details/79625411
C3P0工具类编写
public class C3P0Utils{
private static ComboPooledDataSource datasource = new ComboPooledDataSource(‘itcast’)
public static DataSource getDataSource(){
return dataSource;
}
public static Connection getConnection(){
try{
return dataSource.getConnection();
}catch(Exception e){
throw new RuntimeException(e);
\}
\}
}
DBCP连接池
DBCP也是一个开源的连接池,在企业开发中比较常见,是tomcat的内置连接池。
同样地,第一步需要导入DBCP的jar包,如下所示
配置文件使用.properties文件
public class DBCPUtils{
static{
try{
InputStream is = DBCPUtils.class.getClassLoader().getResourceAsStream(‘dbcp.properties’);
Properties props = new Properties();
props.load(is);
dataSource = BasicDataSourceFactory.createDataSource(props);
}catch(Exception e){
throw new RuntimeException(e);
}
}
public static DataSource getDataSource(){
return dataSource;
}
public static Connection getConnection(){
try{
return dataSource.getConnection();
}catch (Exception e){
throw new RuntimeException(e);
\}
}
}
使用DBUtils完成增删改查的操作
DBUtils是JDBC的简化开发包,同样需要使用连接池技术(获得连接);
DBUtils三个核心功能介绍:
1.QueryRunner提供对sql语句的操作
2.ResultSetHandler接口,用于定义select操作后,怎样封装结果集
3.Dbutils类作为一个工具类定义了关闭资源与事务处理的方法。
QueryRunner核心类介绍
QueryRunner(DataSource ds)提供数据源(连接池),DButils底层自动维护连接Connection
update执行更新数据;query执行查询数据。
JavaBean组件:JavaBean就是一个类,在开发中常用于封装数据,具有如下特性:
1.需要实现接口:java.io.Serializable
2.提供私有字段:private 类型 字段名
3.提供getter/setter方法
4.提供无参构造
使用QueryRunner的代码增删改操作模板:
public void demo(){
try{
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); //调用C3P0工具类
String sql = ‘sql 语句’;
Object[] params = {参数写入};
queryRunner.update(sql,params);
}catch(Exception e){
throw new RuntimeException(e);
}
}
使用QueryRunner的代码查询操作模板:
public void demo(){
try{
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); //调用C3P0工具类
String sql = ‘sql 语句’;
Object[] params = {参数写入};
Category cg = queryRunner.query(sql,new BeanHandler
System.out.println(cg);
}catch(Exception e){
throw new RuntimeException(e);
}
}
还没有评论,来说两句吧...