使用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 抽取的工具类
|