Spring学习(四)之C3P0数据源

9 篇文章 0 订阅
4 篇文章 0 订阅

学习《精通Spring+4.x++企业应用开发实战》 记录笔记,以备以后使用。


C3P0是一个开放源码的JDBC数据源实现项目,实现了JDBC3和JDBC2扩展规范说明的Connection和Statement池。

属性值默认值说明
acquireIncrement       当连接池中的连接用完时,C3P0一次性创建新连接的数目。
acquireRetryAttempts30定义在从数据库获取新连接失败后重复尝试获取的次数。
acquireRetryDelay1000       尝试获取连接的间隔时间
       单位为毫秒
autoCommitOnClosefalse       连接关闭时默认将所有未提交的操作回滚。
automaticTestTablenull       C3P0将创建一张名为Test的空表,并使用自带的查询语句进行测试。若定义了这个参数,那么属性preferredTestQuery将被忽略。用户不能在这张Test表上进行任何操作,它仅为C3P0测试所用。
breakAfterAcquireFailurefalse        获取连接失败将会引起所有等待获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()方法时继续尝试获取连接。
       若为true,那么在尝试获取连接失败后,该数据源将声明已断开并永久关闭。
checkoutTimeout0       当连接池用完时,客户端调用getConnection()方法后等待获取新连接的时间,超时后将抛出SQLException。
       若设为0则无限期等待。
        单位:毫秒
connectionTesterClassNamecom.mchange.v2.C3P0.impl.
DefaultConnectionTester
       通过实现ConnectionTester或QueryConnectionTester的类来测试连接,类名需要设置为全限定名。
idleConnectionTestPeriod0        间隔多少秒检查所有连接池中的空闲连接。默认为0,表示不检查。
initialPoolSize3       初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值。
maxIdleTime0      最大空闲时间,超过空闲时间的连接将被丢弃。
      为0或负数则永不丢弃。
maxPoolSize15       连接池中保留的最大连接数。
maxStatements0        JDBC的标准参数,用以控制数据源内加载的PreparedStatement数量。但由于预缓存的Statement属于单个Connection而不是整个连接池,所以设置这个参数需要考虑多方面的因素,如果maxStatements与maxStatementsPerConnection为0,则缓存被关闭。
maxStatementsPerConnection0       连接池内单个连接所拥有的最大缓存Statement数。
numHelperThreads3       C3P0时异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效地提升性能,通过多线程实现多个操作同时被执行。
preferredTestQuerynull        定义所有连接测试都执行的测试语句。在使用连接测试的情况下,这个参数能显著提高测试速度。测试的表必须在初始数据源的时候就存在。
propertyCycle300        用户修改系统配置参数执行前最多等待的秒数。
testConnectionOnCheckoutfalse        因性能消耗大,请只在需要的时候使用它。如果设为true,那么在每个connection提交的时候都将校验其有效性。建议使用idleConnection TestPeriod或automaticTestTable等方法来提升连接测试的性能。
testConnectionOnCheckinfalse        若为true,那么在取得连接的同时将校验连接的有效性。


对连接有效性的检测,类似DBCP配置方式。估计是使用idleConnectionTestPeriod或autamaticTestTable。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring3中配置数据源,包括DBCP,C3P0,Proxool,Bonecp主要的数据源,里面包含这些数据源的jar文件和依赖文件及配置文件。。 如Bonecp目前听说是最快的数据源,速度是传统的c3p0的25倍, bonecp.properties文件: bonecp.driverClass=org.gjt.mm.mysql.Driver bonecp.jdbcUrl=jdbc:mysql://localhost/manytomany?useUnicode=true&characterEncoding=UTF-8 bonecp.username=root bonecp.password=2008 #分区数量 bonecp.partitionCount = 1 #每个分区含有的最小连接数 bonecp.minConnectionsPerPartition = 1 #每个分区含有的最大连接数 bonecp.maxConnectionsPerPartition = 2 #每次新增连接的数量 bonecp.acquireIncrement = 1 #连接池阀值,当 可用连接/最大连接 < 连接阀值 时,创建新的连接 bonecp.poolAvailabilityThreshold = 20 #连接超时时间阀值,获取连接时,超出阀值时间,则获取失败,毫秒为单位 bonecp.connectionTimeout = 10000 #连接池助手线程数量,可设置为0,该参数会降低运行速度,但程序有大量连接时,有助于提升高并发程序的性能 bonecp.releaseHelperThreads = 0 #语句助手线程数,可设置为0,该参数会降低运行速度,但程序有大量的查询语句时,有助于提升高并发程序的性能 bonecp.statementReleaseHelperThreads = 0 #测试连接有效性的间隔时间,单位分钟 bonecp.idleConnectionTestPeriod = 60 #连接的空闲存活时间,当连接空闲时间大于该阀值时,清除该连接 bonecp.idleMaxAge = 240 #语句缓存个数,默认是0 bonecp.statementsCacheSize = 5 Spring中的配置信息 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <context:annotation-config /> <context:component-scan base-package="com.mvc" /> <mvc:annotation-driven /> <mvc:resources mapping="/resources/**" location="/resources/" /> <mvc:default-servlet-handler /> <aop:config proxy-target-class="true"/> <tx:annotation-driven transaction-manager="txManager"/> <!-- 采用单数据源事务控制方式,通过注解来定义事务--> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>classpath:proxool.properties</value> </property> </bean> <bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close"> <property name="driver"> <value>org.gjt.mm.mysql.Driver</value> </property> <property name="driverUrl"> <value>jdbc:mysql://localhost/manytomany?useUnicode=true&characterEncoding=UTF-8</value> </property> <property name="user"> <value>root</value> </property> <property name="password"> <value>2008</value> </property> <property name="alias"> <value>Db_name</value> </property> <property name="houseKeepingSleepTime"> <value>90000</value> </property> <property name="prototypeCount"> <value>50</value> </property> <property name="maximumConnectionCount"> <value>50</value> </property> <property name="minimumConnectionCount"> <value>2</value> </property> <property name="trace"> <value>true</value> </property> <property name="verbose"> <value>true</value> </property> </bean> </beans>
你好!关于Spring中配置c3p0和MySQL数据源的问题,可以参考以下步骤进行配置: 1. 在pom.xml中添加相关依赖: ``` <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> ``` 2. 在Spring配置文件中配置数据源: ``` <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.cj.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test" /> <property name="user" value="root" /> <property name="password" value="123456" /> <property name="maxPoolSize" value="30" /> <property name="minPoolSize" value="10" /> <property name="initialPoolSize" value="10" /> <property name="maxIdleTime" value="1800" /> <property name="acquireIncrement" value="3" /> </bean> ``` 其中,`driverClass`为MySQL的JDBC驱动类,`jdbcUrl`为数据库连接URL,`user`和`password`为数据库用户名和密码,`maxPoolSize`为最大连接数,`minPoolSize`为最小连接数,`initialPoolSize`为初始连接数,`maxIdleTime`为最大空闲时间,`acquireIncrement`为每次获取连接时增加的连接数。 3. 在DAO层中使用数据源: ``` @Repository public class UserDaoImpl implements UserDao { @Autowired private DataSource dataSource; private JdbcTemplate jdbcTemplate; @PostConstruct public void init() { jdbcTemplate = new JdbcTemplate(dataSource); } // 接下来可以使用jdbcTemplate执行SQL操作 // ... } ``` 以上是一个基本的配置示例,具体根据自己的需求进行调整。希望能够帮到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值