数据库连接池和JDBCTemplate

772 阅读3分钟

本文知识点:

  1. 数据库连接池介绍
  2. 数据库连接池工具实现
  3. JDBCTemplate介绍
  4. JDBCTemplate的使用

1. 数据库连接池介绍

1.1 概念

数据库连接池其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。

1.2 优势

1. 节约资源
2. 用户访问高效

2. 数据库连接池工具实现

2.1 实现

标准接口:DataSourcejavax.sql包下) 方法:

  • 获取连接:getConnection()
  • 归还连接:Connection.close()。如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了。而是归还给连接池。

我们一般不自己实现,主要采用

  1. C3P0:数据库连接池技术。
  2. Druid:数据库连接池实现技术,由阿里巴巴提供的。

2.2 常用数据厂商实现

2.2.1 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
  4. 获取连接: getConnection
    • //1.创建数据库连接池对象
    • DataSource ds = new ComboPooledDataSource();
    • //2. 获取连接对象
    • Connection conn = ds.getConnection();

2.2.2 Druid实现

步骤:

  1. 导入jar包 druid-1.0.9.jar
  2. 定义配置文件:
    • 是properties形式的
    • 可以叫任意名称,可以放在任意目录下
  3. 加载配置文件。Properties
  4. 获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory
  5. 获取连接:getConnection

2.3 代码试验

  • 获取多个数据库连接对象

  • 获取超过最大限度的数据库连接对象

  • 当之前的数据库连接对象被释放时,可以再次被使用

3. JDBCTemplate介绍

Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发。 步骤:

  1. 导入jar包
  2. 创建JdbcTemplate对象。依赖于数据源DataSource
    • JdbcTemplate template = new JdbcTemplate(ds);
  3. 调用JdbcTemplate的方法来完成CRUD的操作
    • update():执行DML语句。增、删、改语句
    • queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
      • 注意:这个方法查询的结果集长度只能是1
    • queryForList():查询结果将结果集封装为list集合
      • 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
    • query():查询结果,将结果封装为JavaBean对象
      • query的参数:RowMapper
        • 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
        • new BeanPropertyRowMapper<类型>(类型.class)
    • queryForObject:查询结果,将结果封装为对象
      • 一般用于聚合函数的查询

4. JDBCTemplate的使用

  • 使用JDBCTemplate操作数据库
  • 插入数据

注:本文的源代码托管在Github