一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完后立即关闭连接,频繁地打开,关闭连接将造成系统的性能低下。解决方案是:当应用程序启动时,系统主动建立足够的数据库连接,并将这写连接组成一个连接池,每次应用程序请求数据库连接时,无需重新建立连接,而是连接池去除已有的连接使用,使用完后不再关闭连接,而是将连接归还给连接池。
JDBC 2.0引入数据库连接池技术。数据库连接池是Connection对象的工厂。使用javax.sql.DataSource来表示,Source只是一个接口,通常用商用服务器提供实现,也有一些开源组织(DBCP和C3P0等)
下面以DBCP为例,解释如何使用数据库连接池的
因为Tomcat和 dbcp 都是Apache公司项目,所以Tomcat内部连接池就是dbcp。
若想使用Tomcat内置连接池,必须要在Context元素中添加Resource标签(用来定义数据源),具体代码如下:(连接的是MySQL数据库)
<Context>
<Resource name="jdbc/mysql" //JNDI
auth="Container"
type="javax.sql.DataSource"
maxActive="50"
maxIdle="10"
maxWait="5000"
username="root"
password="19960722w"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/market?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"/>
</Context>
- driverClassName - JDBC 所用到的数据库驱动的类全名.
- maxAct