spring下,druid,c3p0,proxool,dbcp四个数据连接池的使用和配置

由于那天Oracle的数据连接是只能使用dbcp的数据库连接池才连接上了,所以决定试一下当下所有得数据库连接池连接orcale和mysql,先上代码

配置文件的代码

 1 #=================dbcp连接池======================#
 2 #Oracle数据库连接
 3 #jdbc_driverClassName=oracle.jdbc.driver.OracleDriver
 4 #jdbc_url=jdbc:oracle:thin:@localhost:1521:mydatabase
 5 #jdbc_username=renboqieqie
 6 #jdbc_password=xxxxx
 7 #myssql数据库配置
 8
 9 #jdbc_driverClassName = com.mysql.jdbc.Driver
10 #validationQuery = SELECT 1 FROM DUAL
11 #jdbc_url = jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
12 #jdbc_username = root
13 #jdbc_password = root
14 #=================dbcp连接池end======================#
15
16
17 #=================druid连接池的配置=================#
18 #Oracle数据库连接
19 #jdbc_driverClassName=oracle.jdbc.driver.OracleDriver
20 #jdbc_url=jdbc:oracle:thin:@localhost:1521:mydatabase
21 #jdbc_username=renboqieqie
22 #jdbc_password=xxxx
23 #myssql数据库配置
24 #jdbc_driverClassName = com.mysql.jdbc.Driver
25 #validationQuery = SELECT 1 FROM DUAL
26 #jdbc_url = jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
27 #jdbc_username = root
28 #jdbc_password = root
29 #=================druid连接池的配置end=================#
30
31
32 #===================c3p0连接池的配置===================#
33 #Oracle数据库连接
34 #jdbc_driverClassName=oracle.jdbc.driver.OracleDriver
35 #jdbc_url=jdbc:oracle:thin:@localhost:1521:mydatabase
36 #jdbc_username=renboqieqie
37 #jdbc_password=xxxxx
38 #myssql数据库配置
39 #jdbc_driverClassName=com.mysql.jdbc.Driver
40 #jdbc_url=jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
41 #jdbc_username=root
42 #jdbc_password=root
43 #===================c3p0连接池的配置===================#
44 #===================proxool连接池的配置===================#
45 #Oracle数据库连接
46 #jdbc_driverClassName=oracle.jdbc.driver.OracleDriver
47 #jdbc_url=jdbc:oracle:thin:@localhost:1521:mydatabase
48 #jdbc_username=renboqieqie
49 #jdbc_password=xxxxxx
50 #myssql数据库配置
51 jdbc_driverClassName=com.mysql.jdbc.Driver
52 jdbc_url=jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
53 jdbc_username=root
54 jdbc_password=root
55 #===================proxool连接池的配置===================#

下面是spring-mybatis.xml的配置,即spring文件中的配置

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <beans xmlns="http://www.springframework.org/schema/beans"
  3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
  4     xmlns:aop="http://www.springframework.org/schema/aop"
  5     xsi:schemaLocation="
  6 http://www.springframework.org/schema/beans
  7 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  8 http://www.springframework.org/schema/tx
  9 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
 10 http://www.springframework.org/schema/aop
 11 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
 12 ">
 13
 14     <!-- JNDI方式配置数据源 -->
 15     <!-- <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
 16         <property name="jndiName" value="${jndiName}"></property> </bean> -->
 17     <!-- ========================================配置数据源========================================= -->
 18     <!-- 配置数据源,使用的是alibaba的Druid(德鲁伊)数据源 -->
 19     <!-- <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
 20         init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url}"
 21         /> <property name="username" value="${jdbc_username}" /> <property name="password"
 22         value="${jdbc_password}" /> 初始化连接大小 <property name="initialSize" value="0"
 23         /> 连接池最大使用连接数量 <property name="maxActive" value="20" /> 连接池最大空闲 <property
 24         name="maxIdle" value="20" /> 连接池最小空闲 <property name="minIdle" value="0" />
 25         获取连接最大等待时间 <property name="maxWait" value="60000" /> <property name="poolPreparedStatements"
 26         value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize"
 27         value="33" /> <property name="validationQuery" value="${validationQuery}"
 28         /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn"
 29         value="false" /> <property name="testWhileIdle" value="true" /> 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
 30         <property name="timeBetweenEvictionRunsMillis" value="60000" /> 配置一个连接在池中最小生存的时间,单位是毫秒
 31         <property name="minEvictableIdleTimeMillis" value="25200000" /> 打开removeAbandoned功能
 32         <property name="removeAbandoned" value="true" /> 1800秒,也就是30分钟 <property
 33         name="removeAbandonedTimeout" value="1800" /> 关闭abanded连接时输出错误日志 <property
 34         name="logAbandoned" value="true" /> 监控数据库 <property name="filters" value="stat"
 35         /> </bean> -->
 36
 37     <!-- ========================================分隔线========================================= -->
 38     <!-- ========================================dbcp数据源========================================= -->
 39     <!-- mysql的数据库中,localhost可以写成127.0.0.1,但是orcale的数据库不行,只能是localhost才能连接 -->
 40     <!-- 配置dbcp数据源 -->
 41     <!-- <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
 42         <property name="driverClassName" value="${jdbc_driverClassName}"/> <property
 43         name="url" value="${jdbc_url}"/> <property name="username" value="${jdbc_username}"/>
 44         <property name="password" value="${jdbc_password}"/> 池启动时创建的连接数量 <property
 45         name="initialSize" value="5"/> 同一时间可以从池分配的最多连接数量。设置为0时表示无限制。 <property name="maxActive"
 46         value="30"/> 池里不会被释放的最多空闲连接数量。设置为0时表示无限制。 <property name="maxIdle" value="20"/>
 47         在不新建连接的条件下,池中保持空闲的最少连接数。 <property name="minIdle" value="3"/> 设置自动回收超时连接
 48         <property name="removeAbandoned" value="true" /> 自动回收超时时间(以秒数为单位) <property
 49         name="removeAbandonedTimeout" value="200"/> 设置在自动回收超时连接的时候打印连接的超时错误 <property
 50         name="logAbandoned" value="true"/> 等待超时以毫秒为单位,在抛出异常之前,池等待连接被回收的最长时间(当没有可用连接时)。设置为-1表示无限等待。
 51         <property name="maxWait" value="100"/> </bean> -->
 52     <!-- ========================================分隔线========================================= -->
 53     <!-- ========================================c3p0数据源的配置=============================== -->
 54     <!--2 配置C3P0数据源 -->
 55     <!-- c3p0连接池配置 -->
 56      <!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
 57           用户名
 58           <property name="user" value="${jdbc_username}"/>
 59           用户密码
 60           <property name="password" value="${jdbc_password}"/>
 61           <property name="driverClass" value="${jdbc_driverClassName}"/>
 62           <property name="jdbcUrl" value="${jdbc_url}"/>
 63
 64            连接池中保留的最大连接数。默认值: 15
 65           <property name="maxPoolSize" value="20"/>
 66           连接池中保留的最小连接数,默认为:3
 67           <property name="minPoolSize" value="2"/>
 68           初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3
 69           <property name="initialPoolSize" value="2"/>
 70
 71           最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0
 72           <property name="maxIdleTime" value="60"/>
 73
 74           当连接池连接耗尽时,客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0
 75           <property name="checkoutTimeout" value="3000"/>
 76
 77           当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3
 78           <property name="acquireIncrement" value="2"/>
 79
 80          定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次
 81           <property name="acquireRetryAttempts" value="0"/>
 82
 83           重新尝试的时间间隔,默认为:1000毫秒
 84           <property name="acquireRetryDelay" value="1000" />
 85
 86           关闭连接时,是否提交未提交的事务,默认为false,即关闭连接,回滚未提交的事务
 87           <property name="autoCommitOnClose" value="false"/>
 88
 89           c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。默认值: null
 90           <property name="automaticTestTable" value="Test"/>
 91
 92           如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false
 93           <property name="breakAfterAcquireFailure" value="false"/>
 94
 95           每60秒检查所有连接池中的空闲连接。默认值: 0,不检查
 96           <property name="idleConnectionTestPeriod" value="60"/>
 97           c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0
 98           <property name="maxStatements" value="100"/>
 99           maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0
100           <property name="maxStatementsPerConnection" value="0"/>
101      </bean>   -->
102
103     <!-- ========================================分隔线========================================= -->
104     <!-- ========================================proxool数据源================================== -->
105 <bean id="dataSource"
106     class="org.logicalcobwebs.proxool.ProxoolDataSource">
107     <property name="driver" value="${jdbc_driverClassName}"/>
108     <property name="driverUrl" value="${jdbc_url}"/>
109     <property name="user" value="${jdbc_username}" />
110     <property name="password" value="${jdbc_password}" />
111     <property name="alias" value="Pool_dbname" />
112     <property name="houseKeepingSleepTime" value="90000" />
113     <property name="prototypeCount" value="0" />
114     <property name="maximumConnectionCount" value="50" />
115     <property name="minimumConnectionCount" value="2" />
116     <property name="simultaneousBuildThrottle" value="50" />
117     <property name="maximumConnectionLifetime" value="14400000" />
118     <property name="houseKeepingTestSql" value="select CURRENT_DATE" />
119 </bean>
120     <!-- ========================================分隔线========================================= -->
121     <!-- ========================================针对myBatis的配置项============================== -->
122     <!-- 配置sqlSessionFactory -->
123     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
124         <!-- 实例化sqlSessionFactory时需要使用上述配置好的数据源以及SQL映射文件 -->
125         <property name="dataSource" ref="dataSource" />
126         <!-- 自动扫描me/gacl/mapping/目录下的所有SQL映射的xml文件, 省掉Configuration.xml里的手工配置 value="classpath:me/gacl/mapping/*.xml"指的是classpath(类路径)下me.gacl.mapping包中的所有xml文件
127             UserMapper.xml位于me.gacl.mapping包下,这样UserMapper.xml就可以被自动扫描 -->
128         <property name="mapperLocations" value="classpath:win/qieqie/mapping/*.xml" />
129     </bean>
130     <!-- 配置扫描器 -->
131     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
132         <!-- 扫描me.qieqie.dao这个包以及它的子包下的所有映射接口类 -->
133         <property name="basePackage" value="win.qieqie.dao" />
134         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
135     </bean>
136
137     <!-- ========================================分隔线========================================= -->
138     <!-- 配置Spring的事务管理器 -->
139     <bean id="transactionManager"
140         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
141         <property name="dataSource" ref="dataSource" />
142     </bean>
143
144     <!-- 注解方式配置事物 -->
145     <!-- <tx:annotation-driven transaction-manager="transactionManager" /> -->
146
147     <!-- 拦截器方式配置事物 -->
148     <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
149         <tx:attributes>
150             <tx:method name="add*" propagation="REQUIRED" />
151             <tx:method name="append*" propagation="REQUIRED" />
152             <tx:method name="insert*" propagation="REQUIRED" />
153             <tx:method name="save*" propagation="REQUIRED" />
154             <tx:method name="update*" propagation="REQUIRED" />
155             <tx:method name="modify*" propagation="REQUIRED" />
156             <tx:method name="edit*" propagation="REQUIRED" />
157             <tx:method name="delete*" propagation="REQUIRED" />
158             <tx:method name="remove*" propagation="REQUIRED" />
159             <tx:method name="repair" propagation="REQUIRED" />
160             <tx:method name="delAndRepair" propagation="REQUIRED" />
161
162             <tx:method name="get*" propagation="SUPPORTS" />
163             <tx:method name="find*" propagation="SUPPORTS" />
164             <tx:method name="load*" propagation="SUPPORTS" />
165             <tx:method name="search*" propagation="SUPPORTS" />
166             <tx:method name="datagrid*" propagation="SUPPORTS" />
167
168             <tx:method name="*" propagation="SUPPORTS" />
169         </tx:attributes>
170     </tx:advice>
171     <aop:config>
172         <aop:pointcut id="transactionPointcut"
173             expression="execution(* win.qieqie.service..*Impl.*(..))" />
174         <aop:advisor pointcut-ref="transactionPointcut"
175             advice-ref="transactionAdvice" />
176     </aop:config>
177
178
179     <!-- 配置druid监控spring jdbc -->
180     <bean id="druid-stat-interceptor"
181         class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
182     </bean>
183     <bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut"
184         scope="prototype">
185         <property name="patterns">
186             <list>
187                 <value>me.gacl.service.*</value>
188             </list>
189         </property>
190     </bean>
191     <aop:config>
192         <aop:advisor advice-ref="druid-stat-interceptor"
193             pointcut-ref="druid-stat-pointcut" />
194     </aop:config>
195
196 </beans>

下面来说jar,有很多次测试不通过,

druid,是因为mybatis的dao和xml没有匹配,需要druid.jar就可以

dbcp,这个比较顺利,只需要一个commons-dbcp.jar就可以了

c3p0,这个最不顺利,网上好多教程都至引入了一个包其实是需要两个包的,c3p0.jar和mchange-commons-java

proxool,这个最开始的时候是不顺利的后来也是引入了两个jar,proxool-cglib.jar和proxool.jar.才型

时间: 2024-08-05 19:35:58

spring下,druid,c3p0,proxool,dbcp四个数据连接池的使用和配置的相关文章

SpringBoot整合Druid数据连接池

SpringBoot整合Druid数据连接池 Druid是什么? Druid是Alibaba开源的的数据库连接池.Druid能够提供强大的监控和扩展功能. 在哪里下载druid maven中央仓库: http://central.maven.org/maven2/com/alibaba/druid/ 怎么获取Druid的源码 Druid是一个开源项目,源码托管在github上,源代码仓库地址是 https://github.com/alibaba/druid.同时每次Druid发布正式版本和快照

记录一个简单的dbcp数据连接池

这个示例用到了ThreadLocal与dbcp,我觉得有点意思,就整理了下.使用dbcp,肯定要导入commons-dbcp.jar包.下面直接贴DBUtil代码: public class DBUtil { private static DataSource ds; //定义一个数据连接池 //threadLocal是线程的局部变量,它的实例通常是类中的 private static 字段 private static ThreadLocal<Connection> connLocal=ne

c3p0 数据连接池 流行开源

注意事项:配置文件规定命名,不能更改   c3p0-config <?xml version="1.0" encoding="UTF-8"?><c3p0-config>    <default-config>        <property name="driverClass">com.mysql.jdbc.Driver</property>        <property n

spring数据连接池配置参数

1.使用jdbc连接,每次使用完毕需要关闭连接. 2.使用数据库连接池就会方便很多,但是如果参数配置不对,也会引起mysql连接数不够,导致mysql挂掉,基本原理是:不使用的连接数及时回收回来,而不是一直等待的闲置浪费. <!-- 数据源以及连接池 --> <bean id="dataSourceOri" class="org.logicalcobwebs.proxool.ProxoolDataSource"> <property n

Python下Mysql数据连接池——单例

# coding:utf-8 import threading import pymysql from DBUtils.PooledDB import PooledDB from app.common.file_config import get_config class DbPool(object): _instance_lock = threading.Lock() def __init__(self): if not hasattr(DbPool, "pool"): DbPool

Spring数据库连接池 c3p0、dbcp、spring-jdbc

在用dbcp的时候 后面加上 destroy-method="close" 销毁的方法没事 但是用 spring的jdbc就会报错 提示找不到close这个方法  这是为什么? DBCP DBCP(DataBase connection pool),数据库连接池.是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件.单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为

c3p0、dbcp和proxool比较

现在常用的开源数据连接池主要有c3p0.dbcp和proxool三种,其中:  hibernate开发组推荐使用c3p0; spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样的问题,就是强行关闭连接或数据库重启后,无法reconnect,告诉连接被重置,这个设置可以解决); hibernate in action推荐使用c3p0和proxool; dbcp所需jar:commons-dbcp.jar.commons-pool.jarc3p0所需jar:c3p0-0.9

了解c3p0,dbcp与druid

说到druid,这个是在开源中国开源项目中看到的,说是比较好的数据连接池.于是乎就看看.扯淡就到这. 下面就讲讲用的比较多的数据库连接池.(其实我最先接触的是dbcp这个) 1)DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP. 2)c3p0 c3p0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的C

c3p0、dbcp和proxool的优缺点比较及配置

1.数据库连接池的概念 数据库连接池概述: 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个 应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正是针对这个问题提出来的. 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个:释放空闲时 间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏.这项技术能明显提高对数据库操作的性能. 数