数据库连接池这个概念在上学期的时候做J2EE的实验时候就接触到了,当时仅仅只是了解了这个名词的概念,并没有真正的去深入了解用法,本课程需要做的项目难免需要大量访问数据库资源,考虑到系统的访问优化,开始重拾连接池这个工具。
数据库连接在应用程序开发中是一种昂贵的资源,对他的操作优化直接影响到了整个系统的性能以及健壮性,连接池就是为了这个关键资源的优化而提出的一个重要概念,他首先新建一定量的数据库连接,当应用程序需要访问数据库时动态的分配连接,使用完毕后回收再利用,而不是频繁的新建和关闭连接,基于先进先出的服务顺序为应用程序提供良好的数据库性能保障。
传统的JAVA连接数据库直接使用MYSQL的JDBC(Java Data Base Connectivity),这是一个简单粗暴的方法,由程序直接控制数据库连接,需要访问时从数据库服务器取得连接,执行过需要的操作后释放连接,在小型的本地程序或者对并发量要求不高的项目中,这或许是一个可行的方案;在当时做过的压力测试上,这种方法当时也能承受100台左右的并发访问,但仅仅能持续短时间,一但长时间高负载运行,整个系统就难逃瘫痪的结果。
目前我所了解的数据库连接池有两种,分别是DBCP连接池和C3P0连接池。
DBCP是Apache组织提供的开源连接池,Tomcat作为自家兄弟默认使用DBCP连接池,DBCP可以独立使用亦可以与应用服务器整合使用。
C3P0也是一个开源的JDBC连接池,主要应用于Hibernate开发框架中。
DBCP和C3P0的差别:
DBCP没有自动回收空闲连接的机制,需用户主动释放;
C3P0具有自动检测空闲连接并回收能力;
DBCP和C3P0两种数据库连接池对连接的管理方式也不相同,C3P0提供最大空闲时间,当连接超过最大空闲时间时断开,而DBCP提供最大连接数。
本文在参考http://www.cnblogs.com/xdp-gacl/p/4002804.html完成连接池配置后编写。