常用的数据库连接池(DBCP连接池、C3P0、Druid)

一、数据库连接池

连接池:一个容器,里面放有一定数量的连接对象。可以高效的管理连接对象。
数据库连接是一种非常耗时、耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,使用完毕后再归还到连接池中。
特点:

  • 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
  • 释放空闲时间,超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。

  连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等.
  下来介绍几个常用的数据库连接池:

二、DBCP连接池

  DBCP(DataBase Connection Pool)数据库连接池, 是Java数据库连接池的一种,由Apache开发,通过数据库连接池,可以让程序自动管理数据库连接的释放和断开
使用步骤:

  1. 引入DBCP的两个jar包(commons-dbcp-1.4.jar和commons-pool-1.5.6.jar)和数据库的jar包,记得依赖
  2. 使用连接池
2.1 硬编码的格式
public class Test01 {
   
    public static void main(String[] args) throws SQLException {
   
        BasicDataSource dataSource = new BasicDataSource();
        //配置信息
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydemo");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        //获取操作对象
        PreparedStatement preparedStatement = connection.prepareStatement("select * from user ");
        ResultSet resultSet = preparedStatement.executeQuery();
        while (resultSet.next()){
   
            int id = resultSet.getInt(1);
            String name = resultSet.getString(2);
            System.out.println(id+"--->"+name);
        }
        //释放资源
        resultSet.close();
        preparedStatement.close();
        dataSource.close();
    }
}
2.2 properties配置文件格式

名称:*.properties。
properties文件不能编写中文。

#连接基本设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydemo
username=root
password=123465
#<!--扩展配置 了解-->
#初始化连接
initialSize=10

#最大连接数量
maxActive=50

#<!-- 最大空闲连接 -->
maxIdle=20

#<!-- 最小空闲连接 -->
minIdle=5

#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
maxWait=60000

#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
connectionProperties=useUnicode=true;characterEncoding=gbk

#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true

#driver default 指定由连接池所创建的连接的只读(read-only)状态。
#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
defaultReadOnly=

#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=READ_UNCOMMITTED
public class Test02 {
   
    public static void main(String[] args) throws Exception{
   
        Properties properties = new Properties();
        //加载配置文件
        properties.load(new FileInputStream("src/dbcp.properties"));
        DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
        //连接对象
        Connection connection = dataSource.getConnection(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值