使用Alibaba连接池Druid开发(Spring)

第一章 连接池

1.1. 遇到的问题 - 引出连接池

 

 

 

1.2. 连接池思想

 

 

 

1.3. 连接池的概述

在 Java 中, 连接池使用javax.sql.DataSource接口来表示连接池.

 

注意:DataSource 仅仅只是一个接口, 由各大服务器厂商来实现 (Tomcat.JBoss).

常用的 DataSource 的实现:

  DBCP:  Spring 推荐的

  C3P0:  Hibernate 推荐的

  Druid : (德鲁伊)阿里巴巴开源的,性能最好,速度最快

DataSource(数据源)和连接池 (Connection Pool) 是同一个.

 

1.4. 使用连接池和不使用连接池的区别在哪里

从代码上:

不使用连接池: Conenction 对象由 DriverManager 获取.

  Connection conn = DriverManager.getConnection(url,username,password);

 

使用连接池:

  如何创建 DataSource 对象, 如何在 DataSource 中设置 url, 账号, 密码.

  Connection conn = DataSource 对象.getConnection();

--------------------------------------------------------------------

使用连接池的时候:

  释放资源: Connection 对象.close():

  是把 Connection 放回给连接池, 而不是和数据库断开.

 

1.5. Druid 连接池的使用

1.5.1.   准备 druid 连接池 jar 包到项目

 

 

                    

 

package cn.yq.jdbc.test;

 

import static org.junit.Assert.*;

 

import java.io.InputStream;

import java.io.Reader;

import java.sql.Connection;

import java.util.Properties;

 

import javax.sql.DataSource;

 

import org.junit.Test;

 

import com.alibaba.druid.pool.DruidDataSource;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import com.alibaba.druid.pool.DruidPooledConnection;

 

public class DataSourceTest {

    // 直接创建连接池对象

    @Test

    public void testName() throws Exception {

         // 1. 创建连接池对象

         DruidDataSource ds = new DruidDataSource();

         // 2. 设置连接数据库的账号密码

         ds.setDriverClassName("com.mysql.jdbc.Driver");

         ds.setUrl("jdbc:mysql://localhost:3306/jdbcdemo");

         ds.setUsername("root");

         ds.setPassword("root");

         ds.setMaxActive(10);// 最大连接数

         // 3. 获取连接对象

         Connection conn = ds.getConnection();

         System.out.println(conn);

    }

 

    // 使用工厂对象创建连接池对象,工厂对象的好处,不需要直接设置账号密码等等,只需要将

    // 连接数据库的账号密码等等以指定的 key 的名称配置到 xxx.properties 文件中即可,工厂对象底层自动读取

    @Test

    public void testDataSourceByFactory() throws Exception {

 

         // 1. 获取类加载器用于加载clsspath下面的 配置文件

         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

         // 2. 读取 druid.properties 配置文件

         InputStream inputStream = classLoader.getResourceAsStream("druid.properties");

         // 3. 创建 Properties 对象,并读取配置文件对应的输入流

         Properties p = new Properties();

         p.load(inputStream);

 

         // 4. 创建连接池对象

         DataSource ds = DruidDataSourceFactory.createDataSource(p);

         // 5. 获取连接对象

         Connection conn = ds.getConnection();

         System.out.println(conn);

    }

}

 

 

 

 

1.5.2.   druid.propperties

 

 

 

1.5.3.   使用 Druid 抽取的工具类