首页 > 数据库 >JDBC 数据库连接池之Driud

JDBC 数据库连接池之Driud

时间:2023-05-12 12:32:17浏览次数:36  
标签:JDBC Driud 配置文件 数据库 获取 Connection 连接 连接池

1 数据库连接池简介

  • 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
  • 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
  • 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
  • 好处
  • 资源重用
  • 提升系统响应速度
  • 避免数据库连接遗漏

之前我们代码中使用连接是没有使用都创建一个Connection对象,使用完毕就会将其销毁。这样重复创建销毁的过程是特别耗费计算机的性能的及消耗时间的。

而数据库使用了数据库连接池后,就能达到Connection对象的复用,如下图

JDBC 数据库连接池之Driud_数据库连接

连接池是在一开始就创建好了一些连接(Connection)对象存储起来。用户需要连接数据库时,不需要自己创建连接,而只需要从连接池中获取一个连接进行使用,使用完毕后再将连接对象归还给连接池;这样就可以起到资源重用,也节省了频繁创建连接销毁连接所花费的时间,从而提升了系统响应的速度。

2 数据库连接池实现

  • 标准接口:DataSource
    官方(SUN) 提供的数据库连接池标准接口,由第三方组织实现此接口。该接口提供了获取连接的功能:
Connection getConnection()

那么以后就不需要通过 DriverManager 对象获取 Connection 对象,而是通过连接池(DataSource)获取 Connection 对象。

  • 常见的数据库连接池
  • DBCP
  • C3P0
  • Druid

我们现在使用更多的是Druid,它的性能比其他两个会好一些。

  • Druid(德鲁伊)
  • Druid连接池是阿里巴巴开源的数据库连接池项目
  • 功能强大,性能优秀,是Java语言最好的数据库连接池之一

3 Driud使用

  • 导入jar包 druid-1.1.12.jar
  • 定义配置文件
  • 加载配置文件
  • 获取数据库连接池对象
  • 获取连接

现在通过代码实现,首先需要先将druid的jar包放到项目下的lib下并添加为库文件

JDBC 数据库连接池之Driud_数据库连接池_02

项目结构如下:

JDBC 数据库连接池之Driud_数据库连接_03

编写配置文件如下:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///db1?useSSL=false&useServerPrepStmts=true
username=root
password=1234
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000

使用druid的代码如下:

/**
 * Druid数据库连接池演示
 */
public class DruidDemo {

    public static void main(String[] args) throws Exception {
        //1.导入jar包
        //2.定义配置文件
        //3. 加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));
        //4. 获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);

        //5. 获取数据库连接 Connection
        Connection connection = dataSource.getConnection();
        System.out.println(connection); //获取到了连接后就可以继续做其他操作了

        //System.out.println(System.getProperty("user.dir"));
    }
}

标签:JDBC,Driud,配置文件,数据库,获取,Connection,连接,连接池
From: https://blog.51cto.com/u_16105687/6270215

相关文章

  • HttpClient连接池的连接淘汰策略分析,以及解决HttpNoResponse异常
    本文分析的apacheHttpClient版本为4.5在HttpClient连接池的使用中,发现有三处关于连接释放的时间配置PoolingHttpClientConnectionManager构造函数中的timeToLive,默认是-1publicPoolingHttpClientConnectionManager(finalRegistry<ConnectionSocketFactory>socke......
  • 数据库连接池报错java.lang.NoClassDefFoundError
    第一次用c3p0,在连接时,发声如下报错java.lang.NoClassDefFoundError 经查看,发现它需要辅助包 mchange-commons-java.jar,下载放入后,即可 ......
  • JdbcTemplate 开启事务
    JdbcTemplatejdbcTemplate=newJdbcTemplate();//获取DataSourceDataSourcedataSource=jdbcTemplate.getDataSource();//获取ConnectionConnectionconnection=DataSourceUtils.getConnection(dataSource);//关闭jdbc自动提交connection.setAutoCommit(false);try{/......
  • Method com/mysql/jdbc/JDBC4ResultSet.getObject(Ljava/lang/String;Ljava/lang/Clas
      mybatis-plus生成的日期类型默认是localdatetime,数据库是datetime,按道理转换应该可以,我又不想把实体类转换成date查看依赖<--locadate/locadatetime的时间依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-ty......
  • 数据库连接池
     (解决每次数据库连接的卡顿)优点~~~~1.资源重用避免了频繁的创建2.更快的系统反应速度提前创建了若干数据库连接3.新的资源分配手段实现一个应用最大可用数据库连接数的限制4.同意连接管理避免数据连接泄露强制回收被占用连接从而避免了常规数据库连接操作中出现的资源泄露......
  • springboot alibaba druid数据库连接池配置,输出可执行sql
    #数据源配置spring:datasource:type:com.alibaba.druid.pool.DruidDataSourcedruid:#初始连接数initialSize:5#最小连接池数量minIdle:2#最大连接池数量maxActive:50#配置获取连接等待超时的时间......
  • jdbc连接Oracle
    publicstaticvoidmain(String[]args){//声明连接对象、执行sql对象、结果集对象Connectionconn=null;PreparedStatementpre=null;ResultSetresults=null;//添加jar驱动try{//注册驱动Cla......
  • C3P0连接池在tomcat中的详细配置
    http://qiufubin.blog.sohu.com/55457392.html 2007-07-16 | C3P0连接池在tomcat中的详细配置  一.在tomcat_home\common\lib下放入jdbc的驱动程序,额外说一下,如果是使用sqlserver的话,有至少两个驱动可以选择,一个是微软提供的,另一个是jtds,比微软的要好很多,推荐使用二.配......
  • 数据库连接池到底应该设多大?
    >阅读大约3分钟,颠覆认知[toc]前言本文内容95%译自这篇文章:https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing我在研究HikariCP(一个数据库连接池)时无意间在HikariCP的Githubwiki上看到了一篇文章(即前面给出的链接),这篇文章有力地消除了我一直以来的疑虑,看完......
  • Druid 查询超时配置的探究 → DataSource 和 JdbcTemplate 的 queryTimeout 到底谁生
    前情回顾还记得记一次Druid超时配置的问题→引发对Druid时间配置项的探究遗留的问题吗?如果同时设置 DataSource 的 queryTimeout 和 JdbcTemplate 的 queryTimeout ,那么哪个 queryTimeout 生效?实践出结果想快速知道答案,做法很简单,两个都设置,看生......