JDBC连接池优点
- 传统JDBC数据库连接
-
- 传统JDBC使用步骤
- 使用传统的JDBC存在的缺点
- JDBC连接池
-
- 数据库连接池概念
- 数据库连接池技术的优点
传统JDBC数据库连接
传统JDBC使用步骤
- 加载驱动程序
- 加载数据库的路径以及账户和密码
- 加载Connection
- 编写SQL语句
- 获取PreparedStatement对象
- 设置SQL语句中的参数
- 执行SQL并获取结果
- 关闭连接
使用传统的JDBC存在的缺点
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNCM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPR9kMVpXTwcGROBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0IjNxMDMxAjM2ATNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
1、如图用户每次请求都需要向数据库获取链接,而数据库创建、释放连接都会消耗时间,消耗资源,浪费了数据库的资源,影响系统性能,严重时甚至会造成服务器的崩溃。如果使用数据库连接池可以解决。
2、每次使用数据库连接都需要手动断开连接,如果没有关闭连接,将会导致数据库系统中的内存泄漏,最终导致重启数据库。
3、无法控制被创建的连接对象数,系统资源会被毫无顾忌的分配出去,如果连接过多,可能导致内存泄漏,服务器崩溃。
4、SQL语句写在代码中造成代码不易维护,SQL变动需要改变Java代码。
5、向SQL语句传参数麻烦,占位符需要和参数一一对应。
6、对结果集解析麻烦,SQL变化导致解析代码变化,且解析前需要遍历。
JDBC连接池
数据库连接池概念
数据库连接池就是为数据库连接建立一个“缓冲池”,预先在缓冲池中放入一定量的连接,当需要建立数据库连接时,只需要从“缓冲池”中取出一个,使用完毕之后在放回到“缓冲池”中。
数据库连接池负责分配、管理、释放数据库连接,允许应用程序重复使用一个现有的数据库连接,而不是重新建立了一个连接。
数据库连接池在初始化时将建立一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将保持最少连接数的数据库连接。连接池的最大数据库连接数量限定了连接池能拥有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。
连接池的工作原理图:
数据库连接池技术的优点
资源重用
由于数据库连接得以重用,避免了频繁创建、释放数据库连接引起的大量性能开销。在减少系统消耗的基础上,增加了系统运行环境的平稳性。
更快的系统反应速度
数据库连接池在初始化过程中,已经创建了若干数据库连接置于连接池中备用,此时连接的初始化工作已经完成。对于业务请求而言,直接利用已有的连接,避免了数据库连接初始化和释放过程的时间开销,从而减少了系统的响应时间。
新的资源分配手段
对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接池的配置,实现某一应用最大可用数据库连接数的限制,避免某一应用独占所有的数据资源。
统一的连接管理,避免数据库连接泄露
在较为完善的数据库连接池实现中,可根据预先设定的占用超时设定,强制回收被占用连接,从而避免了传统数据库连接操作中可能出现的资源泄露。