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); //2.通过连接池对象获取数据库连接对象 Connection conn = ds.getConnection(); System.out.println(conn); }
通过读取properties文件
@Test public void test2() throws Exception { //1.类加载器,主要从当前项目的classpath(类路径相对路径)下面读取资源形成输入流 ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); InputStream inputStream = classLoader.getResourceAsStream("db.properties"); //2.创建Properties 配置对象 Properties p = new Properties(); //2.1读取输入流 p.load(inputStream); //3.使用工厂类创建Druid连接池对象 DataSource dataSource = DruidDataSourceFactory.createDataSource(p); //4.获取连接对象 Connection conn = dataSource.getConnection(); System.out.println(conn); } }