在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了这项技术,无需自己编程,但是,深入了解这项技术是非常必要的。
数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。
数据库连接池的主要操作如下:
(1)建立数据库连接池对象(服务器启动)。
(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。
(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。
(4)存取数据库。
(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。
(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0。可以在Spring配置文件中利用这两者中任何一个配置数据源。
<!-- DBCP--> <!-- <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> -->
<!-- C3P0-->
<bean id="dataSource" destroy-method="close" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverClassName}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="minPoolSize"><value>1</value></property> <property name="maxPoolSize"><value>20</value></property> <property name="maxIdleTime"><value>1800</value></property> <property name="acquireIncrement"><value>2</value></property> <property name="maxStatements"><value>0</value></property> <property name="initialPoolSize"><value>2</value></property> <property name="idleConnectionTestPeriod"><value>1800</value></property> <property name="acquireRetryAttempts"><value>30</value></property> <property name="breakAfterAcquireFailure"><value>true</value></property> <property name="testConnectionOnCheckout"><value>false</value></property> </bean>
Spring 连接池的另一种配置
<!--定义数据源boneCP--> <bean id="dataSource" destroy-method="close" class="com.jolbox.bonecp.BoneCPDataSource"> <property name="driverClass" value="${jdbc.driverClassName}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 检查数据库连接池中空闲连接的间隔时间 --> <property name="idleConnectionTestPeriod" value="60" /> <!-- 连接池中未使用的链接最大存活时间 --> <property name="idleMaxAge" value="240" /> <!-- 每个分区最大的连接数 --> <property name="maxConnectionsPerPartition" value="30" /> <!-- 每个分区最小的连接数 --> <property name="minConnectionsPerPartition" value="10" /> <!-- 分区数 ,默认值2,最小1,推荐3-4,视应用而定--> <property name="partitionCount" value="3" /> <!-- 每次去拿数据库连接的时候一次性要拿几个,默认值:2 --> <property name="acquireIncrement" value="5" /> <!-- 设置连接池阀值 --> <property name="poolAvailabilityThreshold" value="10"></property> <!-- 连接时间 --> <property name="connectionTimeout" value="3000"></property> </bean>
<!-- Proxool -->
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"> <property name="driver" value="${jdbc.driverClassName}"/> <property name="driverUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <!-- 如果housekeeper 检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程.所以确认一下你的服务器的带宽.然后定一个合适的值.默认是5分钟. --> <property name="maximumActiveTime" value="60000"/> <!-- 连接池中可用的连接数量.如果当前的连接池中的连接少于这个数值.新的连接将被建立(假设没有超过最大可用数).例如.我们有3个活动连接2个可用连接,而我们的prototype-count是4,那么数据库连接池将试图建立另外2个连接.这和 minimum-connection-count不同. minimum-connection-count把活动的连接也计算在内.prototype-count 是spare connections 的数量. --> <property name="prototypeCount" value="0"/> <!-- 最大的数据库连接数. --> <property name="maximumConnectionCount" value="50"/> <!-- 最小的数据库连接数 --> <property name="minimumConnectionCount" value="2"/> <!-- --> <property name="simultaneousBuildThrottle" value="50"/> <!-- --> <property name="houseKeepingTestSql" value="select CURRENT_DATE"/> </bean>
相关推荐
### Spring框架中C3P0连接池配置详解 在Java Web开发中,数据库连接管理是一项重要的任务。不当的连接管理可能会导致性能问题甚至系统崩溃。Spring框架提供了多种配置数据库连接池的方式,其中C3P0是一种广泛使用的...
Tomcat 连接池配置详解 Tomcat 连接池配置是 Web 应用程序中一个非常重要的组件,它负责管理和维护数据库连接,确保数据访问的高速和安全性。本文将详细介绍 Tomcat 连接池配置的步骤和原理,帮助读者快速掌握 ...
当切换到C3P0时,首先引入了`PropertyPlaceholderConfigurer`来加载`jdbc.properties`文件,这样可以将敏感信息(如用户名、密码和连接池配置)存储在外部文件中,而不是硬编码在XML配置中。然后,配置了`...
在Spring框架中,数据库连接管理是非常关键的一部分,有效的连接池配置可以提高应用的性能和稳定性。本文将深入探讨如何在Spring环境下配置几种常用的数据库连接池,包括HikariCP、Druid和Apache DBCP2。 一、...
Spring2.5配置proxool连接池
【jsp连接池配置器(自动配置连接池)】是一个实用工具,旨在简化开发人员在Java Web应用程序中配置数据库连接池的过程。通常,手动配置连接池需要编写大量的XML配置文件,如`context.xml`或`web.xml`,以及相关的Java...
Spring Boot ActiveMQ连接池配置过程解析 Spring Boot ActiveMQ连接池配置过程解析 在本文中,我们将详细介绍Spring Boot ActiveMQ连接池配置过程解析。该配置过程主要解决了Spring Boot ActiveMQ连接池中的频繁...
本篇文章将详细探讨在Spring环境下配置几种常用的数据库连接池,并提供配置属性的详尽解析和实例应用。 1. **HikariCP** HikariCP是目前非常流行的一款高性能连接池,以其轻量级、高效而受到广泛赞誉。在Spring中...
Tomcat 连接池配置需要在 Maven 项目中添加 Tomcat JDBC 依赖项,并在 application.properties 文件中配置数据库连接信息。下面是 Tomcat 连接池的配置示例: ```xml <!-- Tomcat JDBC 依赖项 --> <groupId>org....
本篇文章将深入探讨Spring支持的几种主要连接池,包括Apache DBCP、C3P0以及Proxool,并分析它们的特性、配置和适用场景。 首先,Apache DBCP(BasicDataSource)是Spring开发团队推荐的数据源,它是Apache Commons...
二、Tomcat连接池配置 1. 添加依赖 在Maven项目中,需要在pom.xml文件中添加HikariCP的依赖: ```xml <groupId>com.zaxxer</groupId> <artifactId>HikariCP 版本号 ``` 2. 配置context.xml 在Tomcat的...
### Spring 数据库连接池配置详解 #### 一、数据库连接池依赖库 为了在Spring框架中使用数据库连接池,我们需要引入以下两个依赖库: 1. **commons-dbcp.jar**:这是Apache Commons DBCP(Database Connection ...
本文将详细讲解JDBC连接池的工作原理、配置方法以及如何通过优化来提升连接速度。 JDBC(Java Database Connectivity)是Java语言访问数据库的标准接口,而JDBC连接池则是一种对数据库连接进行管理和复用的技术。它...
在Spring中配置DBCP连接池,可以通过以下方式: ```xml ``` 这里配置了数据库驱动类(driverClassName)、数据库URL(url)、用户名(username)和密码(password)。这些属性直接定义了如何连接到...
配置Tomcat JDBC连接池,需要在项目的lib目录下放置对应的jar文件,然后在web.xml或Spring配置文件中配置数据源。主要的配置项有最大连接数、最小连接数、超时时间等。 六、Spring Boot集成连接池 在Spring Boot...
**JDBC数据源连接池配置与使用详解** 在Java Web应用中,数据库连接的管理是至关重要的。为了提高性能和资源利用率,开发人员通常会使用数据源连接池。本篇文章将详细讲解JDBC数据源连接池的配置和使用,以帮助你更...
总结,Tomcat数据连接池的配置涉及到选择合适的连接池实现、添加依赖、配置Context文件以及在应用中使用数据源。正确配置和管理数据连接池能显著提升Web应用的性能,同时降低资源消耗,是每个Java开发者必备的技能之...
在Java开发中,数据库连接...最后,提供的"连接池配置文件"很可能是类似上述的application.properties或yml文件,包含具体的Druid连接池配置参数。对于初学者来说,理解并正确配置这些参数是提高应用程序性能的关键。