数据库连接池

1.数据库连接池:

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

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

  *好处:

    1.节约资源

    2.用户访问高效

   *实现:

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

      1.方法:

        *获取链接:getConnection()

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

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

        1.C3p0:数据库连接池技术(这个没用过,用的都是下面那个)

          

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

            *步骤

              1.导入jar包(jar包的下载地址https://repo1.maven.org/maven2/com/alibaba/druid/

              2.配置文件druid.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名
username=root
password=密码
#初始化连接数量
initialSize=5
#最大链接数
maxActive=10
#最大等待时间
maxWait=3000

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

            4.获取链接:getConnection

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Date;
import java.util.Properties;

public class Druid {
    public static void main(String[] args) throws Exception {
        //加载配置文件
        Properties properties = new Properties();
        InputStream is = Druid.class.getClassLoader().getResourceAsStream("druid.properties");
        properties.load(is);
        //获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
        //获取链接
        Connection coon = dataSource.getConnection();
        System.out.println(coon);

    }
}

         *定义一个工具类:

             1.定义一个类 JDBCUtils

             2.提供静态代码块加载文件,初始化链接池对象

             3.提供方法:

                  1.获取链接方式:通过数据库连接池获取链接

                  2.释放资源

                  3.获取链接池的方法:

package Utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JDBCUtils {
    //定义一个成员变量 DataSource
    private  static DataSource ds;
    static {



        try {
            Properties properties =new Properties();
            properties.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
            ds = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
    public static void close(Statement statement,Connection connection) throws SQLException {
        statement.close();
        connection.close();
    }
    public static void close(ResultSet resultSet, Statement statement, Connection connection) throws SQLException {
        statement.close();
        connection.close();
        resultSet.close();
    }


    public static DataSource getDataSource() {
        return ds;
    }
}

 

posted @ 2022-12-26 13:58  会秃头的小白  阅读(213)  评论(0编辑  收藏  举报