数据库连接池和JDBCTemplate介绍

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 数据库连接池和JDBCTemplate介绍

1.数据库连接池

(1)概念:其实就是一个容器(集合),存放在数据库连接的容器    

当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器

(2)好处:

节约资源用户访问高效

(3)实现:

1.标准的接口:DataSource       javax.sql包下的

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

2.一般我们不去实现他,有数据库厂商来实现

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

4)C3P0:数据库连接池技术

步骤:

1.倒入jar包(两个)   c3p0-0.9.1.2.jar     machange-commons-java-0.2.15.jar(不要忘记导入数据库驱动jar包)

2.定义配置文件

a.名称:c3p0.properties或者c3p0-config.xmlb.路径:直接将配置文件放在src目录下即可c.创建核心对象(数据库连接池对象;ComboPooledDataSource)d.获取连接:getConnection

配置文件书写方式

<?xmlversion="1.0"encoding="utf-8"?><c3p0-config><!--命名的配置--><default-config><!--连接数据库的4项基本参数--><propertyname="driverClass">com.mysql.cj.jdbc.Driver</property><!--&amp;表示的意思--><propertyname="jdbcUrl">jdbc:mysql://localhost:3306/news?serverTimezone=UTC&amp;useSSL=false</property><propertyname="user">root</property><propertyname="password">root</property><!--如果池中数据连接不够时一次增长多少个--><propertyname="acquireIncrement">5</property><!--初始化连接数--><propertyname="initialPoolSize">5</property><!--最小连接数--><propertyname="minPoolSize">5</property><!--最大连接数--><propertyname="maxPoolSize">40</property><!--JDBC的标准参数,用以控制数据源内加载的PrepareStatements数量--><propertyname="maxStatements">200</property><!--连接池内单个连接所拥有的最大缓存statements数--><propertyname="maxStatementsPerConnection">5</property></default-config><!--自定义配置(指定名称配置)--><named-configname="test1"><!--连接数据库的4项基本参数--><propertyname="driverClass">com.mysql.jdbc.Driver</property><propertyname="jdbcUrl">jdbc:mysql://localhost:3306/news?serverTimezone=UTC&amp;useSSL=false</property><propertyname="user">root</property><propertyname="password">123456</property><!--如果池中数据连接不够时一次增长多少个--><propertyname="acquireIncrement">5</property><!--初始化连接数--><propertyname="initialPoolSize">5</property><!--最小连接数--><propertyname="minPoolSize">5</property><!--最大连接数--><propertyname="maxPoolSize">40</property><!--JDBC的标准参数,用以控制数据源内加载的PrepareStatements数量--><propertyname="maxStatements">200</property><!--连接池内单个连接所拥有的最大缓存statements数--><propertyname="maxStatementsPerConnection">5</property></named-config></c3p0-config>

c3p0连接池测试代码

packagedatasource.c3p0;
importjava.sql.Connection;
importjava.sql.SQLException;
importjavax.sql.DataSource;
importcom.mchange.v2.c3p0.ComboPooledDataSource;
publicclassC3P0Demo1 {
publicstaticvoidmain(String[] args) throwsException {
//1.创建数据库连接池对象  括号里什么都不传,使用c3p0.config.xml中的默认配置DataSourceds=newComboPooledDataSource();
//2.获取连接对象Connectionconn=ds.getConnection();
//3.打印  注意:数据库连接jar包一定要导包System.out.println(conn);
    }
}

(5)Druid:数据库连接池实现技术,有阿里巴巴提供的

步骤:

1.导入jar包  druid-1.2.8.jar

2.定义配置文件;

后缀名为.properties形式的

可以自定义名称,可以放在任意目录下

3.加载配置文件 。properties

3.获取数据库连接池对象:通过工厂来获取   DruidDataSourceFactory

4.获取连接:getConnection

定义工具类

1.定义一个JDBCUtils

2.提供静态代码快加载配置文件,初始化连接池对象

3.提供方法

a.获取连接方法:通过数据库连接池获取连接

b.释放资源

c.获取连接池的方法

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10月前
|
网络协议 关系型数据库 MySQL
实现数据库连接池
实现数据库连接池
103 0
|
1月前
|
SQL 缓存 关系型数据库
数据库连接池到底应该设多大?
数据库连接池到底应该设多大?
22 0
|
2月前
|
SQL druid Java
JDBC&数据库连接池
JDBC&数据库连接池
24 1
|
11月前
|
SQL 数据库
四、JdbcTemplate2
四、JdbcTemplate2
31 1
|
11月前
|
SQL XML Java
四、JdbcTemplate1
四、JdbcTemplate1
50 1
|
SQL druid Java
JDBC和数据库连接池
JDBC和数据库连接池
5761 0
|
druid Java 数据库连接
JDBC 数据库连接池之Driud
数据库连接池是个容器,负责分配、管理数据库连接(Connection) 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个; 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
135 0
|
Java 数据库连接 数据库
|
Java 数据库连接 数据库
笔记31-JDBC连接池&JDBCTemplate
笔记31-JDBC连接池&JDBCTemplate
|
Java 数据库连接 数据库
JDBC数据库连接池
JDBC数据库连接池
167 0