一.数据库连接池
概述:
复杂的数据库应用, 频繁的建立,关闭连接,会极大的降低系统的性能,造成了系统性能的瓶颈
此时可以使用数据连接池,可以创建指定数量的连接保存到池(容器)里面,
之后要使用连接的时候直接从池中获取,使用完毕之后就回收到池中,
简单说就是把连接交给连接池去管理,保证了需要使用连接的时候不再重新创建,也保证了连接可以重复使用
连接池的种类:
常见的有 Druid 还有 dbcp, 尤其适合Sping 整合使用
Druid 性能更高, 是阿里巴巴开发的, 还可以实现性能的检测, 比如可以实现慢查询的观测.
Demo: Druid 连接池管理连接
1. 下载 Druid 的 jar
2.将 Druid 的jar 添加到项目中
3.定义出连接池工具类 (管理连接对象)
1 public class DruidConnection { 2 //实例化一个数据源对象 3 private static DruidDataSource dataSource = new DruidDataSource(); 4 //使用静态代码块为数据源对象初始化值 5 static { 6 //配置连接地址 7 dataSource.setUrl("jdbc:mysql://localhost:3306/demo?useSSL=true&useUnicode=true&characterEncoding=UTF-8"); 8 //用户名 9 dataSource.setUsername("root"); 10 //密码 11 dataSource.setPassword("1234"); 12 //驱动地址 13 dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 14 //初始化连接大小 15 dataSource.setInitialSize(2); 16 //连接池最大使用连接数量 17 dataSource.setMaxActive(20); 18 //获取连接最大等待时间 19 dataSource.setMaxWait(3000); 20 } 21 /** 22 * 连接重连接池中获取 23 * @return 24 */ 25 public static Connection getConnection() { 26 try { 27 return dataSource.getConnection(); 28 } catch (SQLException e) { 29 e.printStackTrace(); 30 } 31 return null; 32 } 33 34 public static void close(Connection conn) { 35 if (conn != null) { 36 try { 37 //间接回收到连接池中 38 conn.close(); 39 } catch (SQLException e) { 40 e.printStackTrace(); 41 } 42 } 43 } 44 }