连接池简单介绍

目录

 


回到顶部

1. 为什么要使用连接池

  最主要还是提高数据库查询效率

  

回到顶部

2. 连接池思想(原理)

  Java 程序不再直接建立数据库连接,而是从连接池获取数据库连接,用完“放”回连接池,给其他程序使用,这样就不用反复创建、销毁连接,从而提高效率

  

回到顶部

3. 连接池的概述

在 Java 中, 连接池使用 javax.sql.DataSource 接口来表示连接池。
注意:DataSource 仅仅只是一个接口, 由各大服务器厂商来实现 (Tomcat.JBoss)。
常用的 DataSource 的实现:
  DBCP: Spring 推荐的
  C3P0: Hibernate 推荐的
  Druid : (德鲁伊)阿里巴巴开源的, 性能最好,速度最快
DataSource(数据源)和连接池 (Connection Pool) 是同一个

 

回到顶部

4.Druid 连接池的使用

@Test
    public void testName() throws Exception {
        //1. 创建 Druid 连接池对象
        DruidDataSource ds = new com.alibaba.druid.pool.DruidDataSource();
        //1.1 设置驱动
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        //1.2 设置 url
        ds.setUrl("jdbc:mysql://localhost:3306/mybatis");
        //1.3 设置账号
        ds.setUsername("root");
        //1.4 设置密码
        ds.setPassword("1234");
        //1.5 设置最大连接数
        ds.setMaxActive(10);
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">2.通过连接池对象获取数据库连接对象</span>
    Connection conn =<span style="color: rgba(0, 0, 0, 1)"> ds.getConnection();
    System.</span><span style="color: rgba(0, 0, 255, 1)">out</span><span style="color: rgba(0, 0, 0, 1)">.println(conn);
}</span></pre>

  通过读取 properties 文件

    @Test
    public void test2() throws Exception {
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">1.类加载器,主要从当前项目的classpath(类路径相对路径)下面读取资源形成输入流</span>
    ClassLoader classLoader =<span style="color: rgba(0, 0, 0, 1)"> Thread.currentThread().getContextClassLoader();
    InputStream inputStream </span>= classLoader.getResourceAsStream("db.properties"<span style="color: rgba(0, 0, 0, 1)">);
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">2.创建Properties 配置对象</span>
    Properties p = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Properties();
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">2.1读取输入流</span>

p.load(inputStream);
//3. 使用工厂类创建 Druid 连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(p);
//4. 获取连接对象
Connection conn = dataSource.getConnection();
System.out.println(conn);
}

}