AI智能
改变未来

数据库连接池和Druid的概念与代码实现


1. 概念:

  • 其实就是一个容器(集合),存放数据库连接的容器。
  • 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象, 用户访问完之后,会将连接对象归还给容器。

2. 好处:

1. 节约资源2. 用户访问高效

3. 实现:

  1. 标准接口:DataSource javax.sql包下的
    1. 方法:
    获取连接:getConnection()
    归还连接:Connection.close()。如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了。而是归还连接

4. Druid数据库连接池

Druid:数据库连接池实现技术,由阿里巴巴提供的Druid是Java语言中目前最好的数据库连接池之一.Druid能够提供强大的监控和扩展功能.

5. Druid:代码实现

  1. 步骤:
    1. 导入jar包 druid-1.x.x.jar
    2. 定义配置文件:
    是properties形式的
    可以叫任意名称,可以放在任意目录下
    3. 加载配置文件。Properties
    4. 获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory
    5. 获取连接:getConnection

代码:

//1.加载配置文件Properties pro = new Properties();InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream(\"druid.properties\");pro.load(is);//2.获取连接池对象DataSource ds = DruidDataSourceFactory.createDataSource(pro);//3.获取连接Connection conn = ds.getConnection();

6. 定义工具类

1. 定义一个类 JDBCUtils2. 提供静态代码块加载配置文件,初始化连接池对象3. 提供方法1. 获取连接方法:通过数据库连接池获取连接2. 释放资源3. 获取连接池的方法

代码:

public class JDBCUtils {//1.定义成员变量 DataSourceprivate static DataSource ds ;static{try {//1.加载配置文件Properties pro = new Properties();pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream(\"druid.properties\"));//2.获取DataSourceds = DruidDataSourceFactory.createDataSource(pro);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}/*** 获取连接*/public static Connection getConnection() throws SQLException {return ds.getConnection();}/*** 释放资源*/public static void close(Statement stmt,Connection conn){/* if(stmt != null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn != null){try {conn.close();//归还连接} catch (SQLException e) {e.printStackTrace();}}*/close(null,stmt,conn);}public static void close(ResultSet rs , Statement stmt, Connection conn){if(rs != null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(stmt != null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn != null){try {conn.close();//归还连接} catch (SQLException e) {e.printStackTrace();}}}/*** 获取连接池方法*/public static DataSource getDataSource(){return  ds;}}
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 数据库连接池和Druid的概念与代码实现