一、应用场景
web应用中,用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。所以这里使用数据库连接池来避免这种问题。
简单的理解其原理:
1、连接池里面已经有了很多和数据库的连接,用户访问的时候,直接在池子中拿连接就好了,服务器就不需要创建连接了
2、内部维护一个list,当用户调用conn.close()的时候,这个conn对象是不被销毁,而是放入到list中的,为了达到这种效果,我们
需要自定义一个连接池(数据源)。
在这个数据源中,getConnection就是从list中拿到一个连接close就是将连接放回list中
二、编写数据库连接池
DataSourcesun定义的标准的数据源
编写连接池需实现javax.sql.DataSource接口。DataSource接口中定义了两个重载的getConnection方法:
ConnectiongetConnection()
ConnectiongetConnection(Stringusername,Stringpassword)
实现DataSource接口,并实现连接池功能的步骤:
1、在DataSource构造函数中批量创建与数据库的连接,并把创建的连接加入LinkedList对象中。
2、实现getConnection方法,让getConnection方法每次调用时,从LinkedList中取一个Connectio