又到周四,我们这一周的任务又要开始啦。这周的任务就是让我们的程序去连接数据库。有朋友可能会问,我们在第一部分的时候,不是用jsp去连接过数据库嘛?
不错,当时我们的代码是这样写的:
当用户每次请求到达服务器的时候,我们就创建一次数据库连接,然后获取一个Connection对象,然后再去执行我们的sql语句。
不过这样有几个问题:
1、每次都去连接,程序执行的效率不高:至少要有一次TCP三次握手+mysql协议确认;
2、连接数不可控:如果请求数太多,有可能造成大量的连接;
3、配置信息都在代码里,要修改配置就要去改代码;
4、如果连接断开了,程序还要去管理重新连接。
那为了解决上述的问题,我们在这次引入了数据库连接池。他的作用,就像是线程池一样,创建一系列的数据库连接然后他来保证连接的可用性。等需要的时候,就直接去这个池子里去获取。用完了,就将连接放回池子里,以便重复使用,而不用每次都去新建。
各个语言都有自己的连接池库,java语言常用的数据库连接池有dbcp、c3p0和proxool等。这些库的基本思想都类似的,老王选择了proxool。老王将这个库放到线上稳定运行很久了,所以大家不用担心稳定性和可用性。
====github地址====