zoukankan      html  css  js  c++  java
  • Spring框架中获取连接池的几种方式

    什么是数据库连接池?

         数据库连接池是一种关键的有限的昂贵的资源,对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池就是用来解决这些问题而提出的。

         数据库连接池负责分配、管理和释放数据库连接。实际应用中,频繁的连接和关闭数据库,将会产生极大的消耗,影响应用的性能,造成不必要的资源浪费。连接池会预先创建一部分数据库连接以便使用,同时允许应用程序重复使用一个现有的数据库连接。数据库连接池创建的时候设置连接池最小和最大连接数,最小连接数即为,不管该连接是否被使用,都会预先创建。如果连接使用超出最小连接数,会在创建一个数据库连接。最大连接数为该连接池能承载的最大连接数量,如果超出这个数,后面的数据库连接请求将会进入等待队列。超出最小连接数而创建的连接使用结束后,不会被立马释放,而是会被放在连接池中等待被重复使用,或者等超出空闲时间后被释放。

    连接方式:

       1.DBCP数据源:

        (数据源:连接数据库所需的类和参数)

        DBCP配置Mysql数据源(通常是写在mybatis的配置文件中):

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
        
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
        
        <!--initialSize: 初始化连接--> 
        <property name="initialSize" value="5"/> 
        <!--maxIdle: 最大空闲连接--> 
        <property name="maxIdle" value="10"/> 
        <!--minIdle: 最小空闲连接--> 
        <property name="minIdle" value="5"/> 
        <!--maxActive: 最大连接数量--> 
        <property name="maxActive" value="15"/>
        
        <!--removeAbandoned: 是否自动回收超时连接--> 
        <property name="removeAbandoned" value="true"/> 
        <!--removeAbandonedTimeout: 超时时间(以秒数为单位)--> 
        <property name="removeAbandonedTimeout" value="180"/> 
        <!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒--> 
        <property name="maxWait" value="3000"/> 
        <!-- 在空闲连接回收器执行周期(毫秒) -->
        <property name="timeBetweenEvictionRunsMillis" value="10000"/>
        <!--  在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->
        <property name="numTestsPerEvictionRun" value="10"/>
        <!-- 最小空闲时间-->
        <property name="minEvictableIdleTimeMillis" value="10000"/>
        <!-- 验证链接是否有效的sql语句 -->
        <property name="validationQuery" value="select 1" />
        <!-- 获取链接之前是否测试链接的可用性 -->
        <property name="testOnBorrow" value="true"/> 
    </bean> 

       2.C3P0数据源:

          C3P0是一个开源的JDBC数据源实现项目,依赖包:c3p0-0.9.0.4.jar,xml中配置方式与DBCP类似,此处不再赘述。

       3.Spring的数据源实现类 DriverManagerDataSource:

         这是Spring本身提供的一个简单的数据源实现类,它位于org.springframework.jdbc.datasource接口中。该类实现接口javax.sql.DataSource接口,但是它并没有提供池化的连接机制,每次调用getConnection()获取新连接时,只是简单的创建一个新的连接。因此这个数据源类比较适合在单元测试或简单的独立应用中使用,因为它不需要添加额外的依赖类。

    <bean id="driverManagerDateSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
            <property name="driverClassName" value="com.mysql.jdbc.Driver" />
            <property name="url" value="jdbc:mysql:///dstest" />
            <property name="username" value="root" />
            <property name="password" value="root"></property>
        </bean>
        <!-- 获取该对象调用execute方法,可以执行sql语句 -->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="driverManagerDateSource"></property>
        </bean>

        4.获取JNDI数据源:

           如果应用部署在高性能的应用服务器上(eg:weblogic、websohere等),我们希望使用应用服务器本身提供的数据源。应用服务器使用JNDI开放调用者使用,Spring专门为此提供引用JNDI资源的JndiObjectFactoryBean类。

    写在最后:本人的第一篇技术博客,留个纪念^_^,如有问题之处,还望多多指正~~感谢大家支持~ 希望以后一起学习,一起进步!

  • 相关阅读:
    IOS4.x下UIWebView的显示问题
    UIView的动画
    (转)iPhone实战:动态改变UITableView中的Cell高度
    (原) 定制使UITabBarController的tabbar选中tabbaritem时不高亮以及换背景色(支持iPad旋转)
    IOS开发问题汇总
    (转)公钥加密技术
    [Nikon D80]南门老家
    Realtime Ray Tracing RenderMan Point Cloud
    今天败入音特美ER6i
    Practice Realistic Human Skin Rendering In RenderMan Production Pipeline
  • 原文地址:https://www.cnblogs.com/qianlang/p/10339078.html
Copyright © 2011-2022 走看看