前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库连接池和JDBCTemplate介绍

数据库连接池和JDBCTemplate介绍

作者头像
用户9979303
发布2022-10-28 15:34:02
4250
发布2022-10-28 15:34:02
举报
文章被收录于专栏:over文章over文章

简介: 数据库连接池和JDBCTemplate介绍

1.数据库连接池

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

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

(2)好处:

代码语言:javascript
复制
节约资源
用户访问高效

(3)实现:

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

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

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

代码语言:javascript
复制
a.C3P0:数据库连接池技术
b.Druid:数据库连接池实现技术,由阿里巴巴提供的

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

步骤:

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

2.定义配置文件

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

配置文件书写方式

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

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

c3p0连接池测试代码

代码语言:javascript
复制
package datasource.c3p0;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Demo1 {
public static void main(String[] args) throws Exception {
    //1.创建数据库连接池对象  括号里什么都不传,使用c3p0.config.xml中的默认配置
    DataSource ds = new ComboPooledDataSource();
    
    //2.获取连接对象
    Connection conn = 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.获取连接池的方法

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档