数据连接池的概述

6 篇文章 0 订阅

数据连接池

概念

可以看成是一个容器(集合),存放多个数据连接。当系统初始化后,容器被创建,申请连接多个对象来放进容器,当用户访问数据库时,可以从容器中获取连接对象,使用完后归还连接对象到容器中。

优点:节省资源,提高访问效率。

实现:

标准接口: javax.sql包下的DataSource
    方法: 获取连接: getConnection()
           归还连接: Connection.close()
    技术: 1.C3P0:数据库连接池技术
           2.Druid:数据库连接池技术,阿里巴巴

C3P0

步骤:
    1.导入jar包 c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar  //还有驱动jar包
    2.定义配置文件
      名称: c3p0.properties 或者 c3p0-config.xml
      路径:直接将文件放在src目录下
    
    3.创建 数据库连接池对象 ComboPooledDataSource
      DataSource ds  = new ComboPooledDataSource();

    4.获取连接:getConnection
      Connection conn = ds.getConnection();
    

Druid

步骤:
    1.导入jar包 druid-1.0.9.jar
    2.定义配置文件:
       可以是任意名称,任意路径
       properties形式
    
    3.加载配置文件 Properties
    Properties pro = new Properties();
    InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");  
        pro.load(is); 

    4.获取数据库连接池对象 工厂获取
        DataSource ds =       DruidDataSourceFactory.createDataSource(pro);
    5.获取连接
        Connection conn = ds.getConnection();

Druid工具类

定义一个工具类JDBCUtils,提供静态代码块来加载配置文件,初始化连接池对象,提供方法(获取连接方法,释放对象,获取连接池方法)

public class JDBCUtils {

    //1.定义成员变量 DataSource ds
    private static DataSource ds ;

    static{
        try {
            //1.加载配置文件
            Properties pro = new Properties();
            pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
            //2.获取DataSource ds
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接
     */
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }

    /**
     * 释放资源
     * 进行方法的重载
     */
    public static void close(Statement stmt,Connection conn){
      
       close(null,stmt,conn);
    }


    public static void close(ResultSet rs , Statement stmt, Connection conn){

        if(rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(conn != null){
            try {
                conn.close();//归还连接
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 获取连接池方法
     */
    public static DataSource getDataSource(){
        return  ds;
    }
}

Spring JDBC

Spring框架对JDBC进行简单封装,提供了一个JDBCTemplate对象来简化JDBC的开发
步骤:
    1.导入jar包
    2.创建jdbcTemplate对象  //依赖于DataSource数据源
   JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    3.调用JdbcTemplate的方法来完成增删改查的操作
        update():执行DML语句 //增、删、改
        
        query():查询结果,将结果封装为JavaBean对象,一般使用   BeanPropertyRowMapper实现类完成javaBean的自动封装
new BeanPropertyRowMapper<类型>(类型.class)  
        
        queryForMap():查询结果,将结果集封装成map集合,列名为key,值为value,将这条记录封装为一个map集合  //结果集长度只能是1
        
        queryForList():查询结果,将结果集封装为list集合  //将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
        
        queryForObject:查询结果,将结果封装为对象   //一般用于聚合函数的查询 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值