数据库连接池和JDBCTemplate介绍

2022-10-28 15:34:02 浏览数 (1)

简介: 数据库连接池和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.获取连接池的方法

0 人点赞