RT,这几个东东已经困扰我很长一段时间了。。。
这次争取把她们理清楚了!
参考资料:
1. 数据库连接池:http://www.cnblogs.com/shipengzhi/archive/2011/06/07/2074396.html
http://pengshao.iteye.com/blog/1672717
1. 数据源与连接池
参考:http://pengjianbo1.iteye.com/blog/503326
http://www.cnblogs.com/ITtangtang/archive/2012/05/21/2511749.html
http://blog.csdn.net/zhanngle/article/details/4027245
按自己理解,数据源有时指数据库/存储数据的文件(数据源头),有时也指数据库的引用/连接数据库的工具(毕竟其中含有url,username,pwd等参数)
而连接池则是指管理数据库连接的地方。
按照目前常用的方式,数据源常作为联连接数据库的工具,而连接池则随着数据源的创建而一起配置完成。
比如常用的DataSource有c3p0,dbcp,经常通过Spring容器进行实例化,然后交由Tomcat管理。同时Tomcat也会创建数据库连接池来优化数据库的操作性能。
一图胜千言!!!
按上图所示,假设应用服务器Tomcat和数据库服务器的场景。
老方法:
1. DriverManager.getConnection()创建新的数据库联接
2. 执行SQL语句
3. 关闭数据库联接
缺点在于:1. 联接无法复用,严重影响应用程序性能;2. DriverManager得到联接需要硬编码,不灵活
DataSource(连接数据库工具)+Connection Pool(连接池)方法:
1. Tomcat实例化DataSource并按配置开辟连接池
2. DataSource.getConnection()获取已经提前创建好的数据库连接
3. 执行SQL语句
4. 关闭数据库联接,该连接回到连接池以备复用。
优点:1. 连接复用;2. 由JNDI统一管理DataSource