数据库连接池

数据库连接池

一个用来存放数据库连接的容器。当被创建时,容器初始化,创建连接对象。

当用户需要访问数据库是,从容器中获取连接对象,在访问完毕以后,归还连接对象到连接池中。

使用数据库连接池的好处是:节约资源,用户访问更加高效。

DataSource

该接口为数据库连接池应该实现的标准接口

getConnection 从连接池获取连接,返回一个Connection对象

当对该方法返回的Connection对象调用close方法是,并不是销毁该连接,而是将该连接归还到数据库连接池中。

常用连接池实现

常用连接池实现有两个:

  1. C3P0

  2. Druid 阿里巴巴连接池

使用步骤为,

  1. 导入jar包

  2. 定义配置文件

  3. 创建核心对象 数据库连接池对象

其中C3P0和Druid的使用存在有微小的差别,C3P0使用xml作为配置文件。而Druid则使用.properties做为配置文件。

同时,Druid创建数据库连接池时,当需要应用不同配置时,

DataSource dataSource = DruidDataSourceFactory.createDataSource(profile);

应该提供加载了不同配置文件的Properties对象。

而在C3P0中,如果需要应用不同的配置

ComboPooledDataSource pollDataSource = new ComboPooledDataSource("student");

只需要标识指定不同的配置的name属性值就可以了,不过不提供的话,那么将使用默认配置。

还有一点区别就是在申请超过最大连接数的连接时,C3P0会阻塞到有空闲的连接,而Druid会抛出异常。

Spring JDBC

使用Spring JDBC以后,就不需要再手动申请释放Statement。

使用步骤:

  1. 导入jar包

  2. 创建JdbcTemplated对象,依赖于数据源DataSource

  3. 调用JdbcTemplate的方法完成crud操作

如:

JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());

String sql = "update test set manay=? where name=?";
System.out.println(jdbcTemplate.update(sql, 200, "张三"));

常用方法

  1. update 执行所有DML语句,返回int值标志影响的函数

  2. queryForMap 将查询的记录封装为Map。既然是封装为Map也就意味着该方法只适合单条记录的情况

  3. queryForList 封装为List

  4. query 封装为为javaBean对象 第二个参数需要传递一个RowMapper接口实现类,他需要实现一个mapRow方法来封装数据。

    或者使用BeanPropertyRowMapper的构造方法来创建一个mRowMapper接口实现对象,它需要提供一个类的class。

    在接受到数据以后,它将自动封装。

    如:

    JdbcTemplate jdbcTemplate = new JdbcTemplate(DruidUtil.getDataSource());
    String sql = "select * from student";
    List<Student> students = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Student.class));
    
  5. queryForObject 将查询到的数据封装为指定对象 第二个参数提供转换类型的字节码文件。一般用于查询结果为单行单列的数据

数据库连接池

上一篇:SQL视图


下一篇:node用express写后端restful接口实战五:向数据库插入文章promise和async/await两种写法、用postman测试接口插入数据到数据库