连接池有哪些?常用的连接池介绍

KLQ 2020-06-10 11:39:38 java常见问答 6848

你知道常用的连接池都有哪些吗?下面的文章要给大家带来的就是这方面的内容,一起来看看常用的连接池吧!

一、常用连接池

1、proxool: hibernate.cfg.xml中配置

先写proxool的配置文件,文件名:proxool.xml(一般放在与hibernate.cfg.xml文件在同一个目录中)
       

<?xml version="1.0" encoding="UTF-8"?>
<!-- the proxool configuration can be embedded within your own application's.  Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
    <proxool>
        <!--连接池的别名-->
        <alias>DBPool</alias>
        <!--proxool只能管理由自己产生的连接-->
        <driver-url>jdbc:mysql://localhost:3306/application_context?useUnicode=true&characterEncoding=UTF8</driver-url>
        <!?JDBC驱动程序-->
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <driver-properties>
            <property name="user" value="root"/>
            <property name="password" value=""/>
        </driver-properties>
        <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁-->
        <house-keeping-sleep-time>90000</house-keeping-sleep-time>
        <!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-->
        <maximum-new-connections>20</maximum-new-connections>
        <!-- 最少保持的空闲连接数-->
        <prototype-count>5</prototype-count>
        <!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定-->
        <maximum-connection-count>100</maximum-connection-count>
        <!-- 最小连接数-->
        <minimum-connection-count>10</minimum-connection-count>
    </proxool>
</something-else-entirely>

配置hibernate.cfg.xml文件

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration   PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-  configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory >
        <property name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>
        <property name="hibernate.proxool.pool_alias">DBPool</property>
        <property name="hibernate.proxool.xml">proxoolconf.xml</property>
    </session-factory>
</hibernate-configuration>

2、c3p0: hibernate.cfg.xml中配置

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration   PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"  "http://hibernate.sourceforge.net/hibernate-configuration-                     3.0.dtd">
<hibernate-configuration>
    <session-factory >
        <!--JDBC驱动程序-->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- 连接数据库的URL-->
        <property name="connection.url">  jdbc:mysql://localhost:3306/application_context </property>
        <property name="connection.useUnicode">true</property>
        <property name="connection.characterEncoding">UTF-8</property>
        <!--连接的登录名-->
        <property name="connection.username">root</property>
        <!--登录密码-->
        <property name="connection.password">paul</property>
        <!-- C3P0连接池设定-->
        <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
        <!-- 最大连接数 -->
        <property name="hibernate.c3p0.max_size">20</property>
        <!-- 最小连接数 -->
        <property name="hibernate.c3p0.min_size">5</property>
        <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
        <property name="hibernate.c3p0.timeout">120</property>
        <!-- 最大的PreparedStatement的数量 -->
        <property name="hibernate.c3p0.max_statements">100</property>
        <!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒-->
        <property name="hibernate.c3p0.idle_test_period">120</property>
        <!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 -->
        <property name="hibernate.c3p0.acquire_increment">2</property>
        <!--其它配置-->
                                     ……
                 
    </session-factory>
</hibernate-configuration>

3、JNDI: hibernate.cfg.xml中配置

数据源已经由应用服务配置好了,Hibernate要做的就是通过JNDI名找到这个数据源。

应用服务器将连接池对外显示为JNDI绑定数据源,它是javax.jdbc.Datasource类的一个实例。

只要配置一个Hibernate文件:

hibernate.connection.datasource=java:/comp/env/jdbc/JNDI_NAME //JNDI名 hibernate.transaction.factory_class = org.hibernate.transaction.JTATransactionFactory hibernate.transaction.manager_loopup_class=org.hibernate.transaction.JBossTransactionManagerLookup hibernate.dialect=org.hibernate.dialect.MySQLDialect

4、dbcp: hibernate.cfg.xml中配置

<property name="dbcp.maxActive">100</property>
<property name="dbcp.whenExhaustedAction">1</property>
<property name="dbcp.maxWait">60000</property>
<property name="dbcp.maxIdle">10</property>
<property name="dbcp.ps.maxActive">100</property>
<property name="dbcp.ps.whenExhaustedAction">1</property>
<property name="dbcp.ps.maxWait">60000</property>
<property name="dbcp.ps.maxIdle">10</property>

以上就是连接池的简单介绍了,你都清楚的了解了吧,更多关于连接池的内容,可以继续来本站的常见问题栏目了解。

推荐阅读:

连接池最大连接数是多少?应该如何设置?

连接池已经耗尽的表现是什么?解决方法是什么?

连接池的原理是什么?工作原理是什么?