常用的数据源连接池

1.DBCP

  1. 需要的依赖包
    <dependency>
    
      <groupId>commons-dbcp</groupId>
    
      <artifactId>commons-dbcp</artifactId>
    
      <version>1.4</version>
    
    </dependency>
  2. 数据源实现类在spring中的配置
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    
        <property name="driverClassName" value="${driver}" />
    
        <property name="url" value="${url}" />
    
        <property name="username" value="${username}" />
    
        <property name="password" value="${password}" />
    
        <property name="initialSize" value="5" />
    
        <property name="maxActive" value="10" />
    
    </bean>

     

2.C3P0

  1. 需要的依赖包
    <dependency>
    
      <groupId>c3p0</groupId>
    
      <artifactId>c3p0</artifactId>
    
      <version>0.9.1.2</version>
    
    </dependency>

     

  2. 数据源实现类在spring中的配置
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    
        <property name="driverClass" value="${driver}" />
    
        <property name="url" value="${url}" />
    
        <property name="user" value="${username}" />
    
        <property name="password" value="${password}" />
    
        <property name="initialPoolSize" value="5" />
    
    </bean>

 3.Proxool(据说比DBCP和C3P0的性能都要好)

Proxool与其他的数据源连接池有点不一样,它不但会创建一个甚至多个连接池,而且还为每个连接池定义了资源定位(url),使用Proxool提供的连接驱动来实现与连接池的连接。因此,在配置Proxool连接池时,需要两步:1.创建连接池;2.使用一般的jdbc获取连接。

3.1 Proxool的xml配置文件

在创建连接池前,都需要对Proxool进行一些配置,下面是配置样例:

<?xml version="1.0" encoding="UTF-8"?>

<something-else-entirely>

    <proxool>

        <alias>DBPool</alias><!--该连接池的别名,那么该连接池的资源定位(URL)就是proxool.DBPool-->

        <driver-url>jdbc:mysql://192.168.2.108:3306/lucky_wheel_test</driver-url><!-- 设定连接数据库的url -->

        <driver-class>com.mysql.jdbc.Driver</driver-class><!-- 设定所连接数据库使用的驱动 -->    

        <driver-properties><!-- 设定连接数据库的参数 -->                            

            <property name="user" value="test" /><!-- 设定登陆用户 -->                

            <property name="password" value="test" /><!-- 设定登陆密码 -->

        </driver-properties>

        <house-keeping-sleep-time>60000</house-keeping-sleep-time><!-- 设定sleep time -->        

        <minimum-connection-count>1</minimum-connection-count><!-- 设定最少的连接数 -->        

        <maximum-connection-count>15</maximum-connection-count><!-- 设定最大的连接数 -->        

        <maximum-connection-lifetime>18000000</maximum-connection-lifetime><!-- 设定连接的最长存活时间 -->    

        <maximum-active-time>60000</maximum-active-time><!-- 设定从连接池拿出后最大的使用时间 -->

        <house-keeping-test-sql>select 1</house-keeping-test-sql><!-- 设定测试连接是否alive的命令 -->

        <verbose>true</verbose>

        <trace>false</trace>

    </proxool>

    <!--可配置多个连接池-->

    <proxool>

        ...

    </proxool>

</something-else-entirely>

3.2 加载Proxool配置文件创建连接池

3.2.1 硬代码方式加载Proxool配置文件

  static{

        InputStream is = ProxoolTestCase.class.getResourceAsStream("/test/proxool.xml");

        Reader reader = new InputStreamReader(is);

        try {

            JAXPConfigurator.configure(reader, false);

        } catch (ProxoolException ex) {

            logger.debug("", ex);

        }

    }

3.2.2 servlet中加载Proxool配置文件

    <!--加载proxool配置文件创建proxool连接池-->

    <servlet>  

        <servlet-name>ServletConfigurator</servlet-name>  

        <servlet-class>  

            org.logicalcobwebs.proxool.configuration.ServletConfigurator   

        </servlet-class>  

        <init-param>  

            <param-name>xmlFile</param-name> 

            <param-value>WEB-INF/proxool.xml</param-value>  

        </init-param>  

        <load-on-startup>1</load-on-startup>  

    </servlet>

    <!--Admin servlet用于监测proxool连接池信息-->

    <servlet>  

        <servlet-name>Admin</servlet-name>  

        <servlet-class>  

            org.logicalcobwebs.proxool.admin.servlet.AdminServlet   

        </servlet-class>  

    </servlet>  

    <servlet-mapping>  

        <servlet-name>Admin</servlet-name>  

        <url-pattern>/admin</url-pattern>  

    </servlet-mapping>

3.3 普通的Jdbc方式获取连接

3.3.1 硬代码方式获取连接

        Connection connection = null;

        try {

            Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");

            connection = DriverManager.getConnection("proxool.DBPool");

        } catch (Exception ex) {

        }

3.3.2 spring方式配置数据源

  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

        <property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver"/>

        <property name="url" value="proxool.DBPool"/>

    </bean>

你可能感兴趣的:(连接池)