Druid连接池

连接池

1.概念:首先我们先了解什么是连接池。我们在编写JDBC程序时通常的步骤是注册驱动、获取连接、获得执行SQL语句对象、增删改查数据,也就是说每一个对数据库记录的操作都要执行一遍这些步骤。一个java程序的业务逻辑层就是通过调用每一个数据库表格对应的数据管理类来完成业务操作,也就是说一个java程序有多个数据管理类而且这些类需要多次调用。如果每次调用执行数据管理类需要执行之前的那些操作那样的话执行效率很低,而我们不难发现其实每一次执行JDBC类其中有些操作是相同的,如注册驱动、获取连接、获得执行SQL语句对象,那这些获得的资源就可以把它们包装成工具类,用来使用,这样整个java程序执行的效率就会大大提升。由此,连接池的概念诞生。连接池简单来说就是储存和管理连接对象,它会在整个程序启动前就创建一定数量的连接对象,其他类调用连接池的某些方法获得连接、归还连接。
2.连接池的实现原理:连接池,储存和管理连接对象。储存,我们可以将创建的连接对象储存在数组或者集合中。而管理,就是定义方法从存放连接的数组或集合中获取连接。为了方便使用连接池,将连接池包装成工具类,即连接池的成员变量、方法都用静态修饰。

Druid连接池

1.概念:Druid是由阿里巴巴开发的开源的JDBC连接池、监控组件(但是在这里仅介绍它连接池的功能)。阿里巴巴将连接池一系列方法包装成一个工具供我们方便直接使用。
2.下载架包:要使用Druid这个工具,引入相关架包。

下载链接:https://repo1.maven.org/maven2/com/alibaba/druid/

下载最新版本,将架包引入java程序即可使用Druid连接池。

3.Druid使用关键类及相关操作:Druid这个组件还有其他功能的类,但是这里作为初学者,仅介绍连接池的相关的关键类。

  • 关键类DruidDataSource:就是我们需要的连接池
  • 获取DruidDataSource对象:
DataSource dataSource = new DataSource();
  • 配置连接池:获得连接池后,还需我们配置连接数据库的参数
		dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/practise?useUnicode=true&characterEncoding=utf8&useSSL=true");
        dataSource.setUsername("root");
        dataSource.setPassword("1234");
  • 获取连接对象:通过调用连接池的getConnection方法获取连接对象
Connection connection = dataSource.getConnection();
  • 释放资源

    我们用完连接后需要释放资源,之前通常我们都是通过连接对象的close方法直接销毁连接对象来释放资源,而现在我们使用了连接池了,我们使用完连接对象后需要的是归还连接池。而在实际开发中为了方便使用连接池,我们通常会在连接池中强化Connection类的close方法,从而实现从连接池获得连接对象调用close方法直接执行归还连接的操作。Druid连接池就已经帮我们强化Connection类的close方法,我们可以直接通过调用从连接池获得的连接对象的close方法完成归还连接的操作。
  • 配置文件配置连接池
    之前我们配置连接池是通过某些方法来配置连接池,但是在实际开发中我们这样配置连接池,如果需要更改连接数据库的一些参数,那就很麻烦。我们就需要通过资源文件来配置连接池。
    1)编写资源文件
    这里以编写properties资源文件为例
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/practise?useUnicode=true&characterEncoding=utf8&useSSL=true
username=root
password=1234

注意:这里driverClassName、url等参数名应原样编写,大小写不能错误,因为配置连接池就是通过调用properties类来获取参数,而properties类获取资源就是就是通过参数名来获取的。
2)资源文件配置连接池
编写好资源文件后,我们就需要通过资源文件来配置连接池。首先我们需要将资源文件写入内存中,然后用过DruidDataSourceFactor.createDataSource(properties)此方法创建连接池,参数为Properties类对象。

Properties properties = new Properties();
//将资源文件写入内存中,参数为资源文件的路径
properties.load(new FileInputStream("src/main/java/com/mysql/jdbc/mysql.properties"));
//创建并配置连接池
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
  • 再次包装
    在创建连接池后,我们不能发现整个程序只需要一个连接池那我们则可以再次包装一个工具类,这个类只创建一个连接池,定义一个方法调用连接池的getConnection方法来返回一个连接对象。
public class DruidJdbc{


    /**
     * 创建一个连接池
     */
    private static final DataSource dataSource;
	//初始化创建并配置连接池
    static {
        Properties properties = new Properties();
        try {
            properties.load(new FileInputStream("src/main/java/com/mysql/jdbc/mysql.properties"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        DataSource dataSource1;
        try{
            dataSource1 = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
            dataSource1 = null;
        }
        dataSource = dataSource1;
    }


    /**
     * 返回连接池
     * */
    public static DataSource getDataSource(){
        return dataSource;
    }


    /**
     * 获取连接对象
     */
    public static Connection getConnection(){
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }  
    }

}

总结

以上就是Druid连接池简单用法。通过连接池可以简化我们在编写JDBC的代码,同时也大大提高程序的执行效率。其实我们再回头看看每个编写的JDBC程序会发现,大多JDBC程序基本就一个SQL语句不同,其他代码基本相同,于是就有Dbutils工具,它又更好地帮我们简化了编写JDBC的代码,感兴趣的可以了解一下。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值