在看数据库连接池之前我们先来看一个应用程序和数据库建立连接的过程:
1.通过 TCP协议的三次握手和数据库服务器建立连接,然后发送数据库用户账号密码,等待数据库验证用户身份。
2.完成用户身份验证后,系统才可以提交SQt语句到数据库执行。
3.这个时候假设不使用数据库连接池,在完成一次SQL查询后,就需要关闭连接,关闭连接就需要和数据库通信告诉它我们要断开连接了然后再TCP四次挥手最后完成关闭。
这个过程中每一次发起SQL查询所经历的TCP建立连接,数据库验证用户身份,数据库用户登出,TCP断开连接消耗的等待时间都是可以避免的,这明显是一种浪费。
数据库连接池就是典型的用空间换时间的技术手段,在应用程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由应用程序动态地对池中的连接进行申请、使用和释放。连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。
通过连接池的规范接口(javax.sql.DateSource)得到连接池对象,通过连接池对象获取数据库连接对象Connetion。