搭建SSM框架用什么链接池,建议用Druid

c3p0,dbcp与druid 三大连接池的区别

数据库连接池有很多选择,c3p、dhcp、proxool等,druid作为一名后起之秀
可以看https://blog.csdn.net/qq_34359363/article/details/72763491

druid链接池

阿里出品,淘宝和支付宝专用数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个 SQL Parser。支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。Druid针对Oracle和MySql做了特别优化,比如Oracle的PS
Cache内存占用优化,MySql的ping检测优化。Druid提供了MySql、Oracle、Postgresql、SQL-92的SQL的完整支持,这是一个手写的高性能SQL Parser,支持Visitor模式,使得分析SQL的抽象语法树很方便。简单SQL语句用时10微秒以内,复杂SQL用时30微秒。通过Druid提供的SQL Parser可以在JDBC层拦截SQL做相应处理,比如说分库分表、审计等。Druid防御SQL注入攻击的WallFilter就是通过Druid的SQL Parser分析语义实现的。

druid的实现方式

pom.xml文件

  <!-- 阿里数据库连接池 下载地址http://www.mvnrepository.com/artifact/com.alibaba/druid-->
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
  </dependency>

applicationContext.xml

     <!-- 指定数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <!-- 连接驱动 -->
        <property name="driverClassName" value="${dataSource.driverClass}"/>
        <property name="url" value="${dataSource.jdbcUrl}"/>
        <property name="username" value="${dataSource.user}"/>
        <property name="password" value="${dataSource.password}"/>
        <property name="filters" value="stat" />
        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="${cpool.initialSize}" />
        <property name="maxActive" value="${cpool.maxActive}" />
        <property name="minIdle" value="${cpool.minIdle}" />
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="${cpool.maxWait}" />
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="${cpool.timeBetweenEvictionRunsMillis}" />
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="${cpool.minEvictableIdleTimeMillis}" />
        <property name="validationQuery" value="SELECT 'x'" />
        <property name="testWhileIdle" value="true" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />
        <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
        <property name="poolPreparedStatements" value="true" />
        <property name="maxPoolPreparedStatementPerConnectionSize" value="${cpool.maxPoolPreparedStatementPerConnectionSize}" />
    </bean>

jdbc.properties

dataSource.driverClass=com.mysql.jdbc.Driver
dataSource.jdbcUrl=jdbc:mysql://localhost:3306/recycling_treasure?characterEncoding\=UTF-8&amp;zeroDateTimeBehavior\=convertToNull
dataSource.user=root
dataSource.password=root
###----------------- druid 链接池 -------------
cpool.initialSize=3
#配置初始化大小、最小、最大
cpool.minIdle=3
cpool.maxActive=20
#配置获取连接等待超时的时间
cpool.maxWait = 60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
cpool.timeBetweenEvictionRunsMillis =60000
#配置一个连接在池中最小生存的时间,单位是毫秒
cpool.minEvictableIdleTimeMillis = 300000
cpool.maxPoolPreparedStatementPerConnectionSize = 50

猜你喜欢

转载自blog.csdn.net/qq_20516587/article/details/80620844