怎样在hibernate中使用数据库连接池

来源:互联网 发布:淘宝ifashion是什么 编辑:程序博客网 时间:2024/05/01 13:40
经过一个周末的折腾,终于找到了hibernate中使用数据库连接池的解决方案。
        从网上google了一下,发现大致有三种可以实施的解决方案:
                1、使用hibernate自带的连接池;
                2、使用c3po包的连接池功能;
                3、使用Proxool包的连接池功能;

        第一种方案,就是在myeclipse产生的hibernate.cfg.xml中添加一个属性:
             <property name="connection.pool_size">20</property>
       第二种方案是:
<property name="myeclipse.connection.profile">test</property>
        <property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
        <property name="connection.url">jdbc:microsoft:sqlserver://localhost:1433;databasename=test</property>
        <property name="connection.username">sa</property>
        <property name="connection.password">123</property>
        <property name="c3p0.min_size">2</property>
        <property name="c3p0.max_size">10</property>
        <property name="c3p0.timeout">1800</property>
        <property name="c3p0.acquireRetryAttempts">4</property>
        <property name="c3p0.acquireIncrement">1</property>
        <property name="c3p0.idleConnectionTestPeriod">36000</property>
        <property name="c3p0.initialPoolSize">2</property>
        <property name="c3p0.maxPoolSize">10</property>
        <property name="c3p0.maxIdleTime">1200</property>
        <property name="c3p0.maxStatements">30</property>
        <property name="c3p0.minPoolSize">2</property>
        <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

       第三中方案是Proxool:
             在hibernate.cfg.xml中添加:
<!-- Proxool Database connection settings -->
       
        <property name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>
        <property name="hibernate.proxool.pool_alias">DBPool</property>
        <property name="hibernate.proxool.xml">Proxool.xml</property>
 
        <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
 
        <property name="show_sql">false</property>

         然后再添加一个Proxool.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>
    <driver-url>jdbc:microsoft:sqlserver://localhost:1433;databasename=test</driver-url>
    <driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
    <driver-properties>
      <property name="user" value="sa"/>
      <property name="password" value="123"/>
    </driver-properties>
    <maximum-connection-count>10</maximum-connection-count>
  </proxool>
</something-else-entirely>

       这个三种方案,我都可以配置成功,可是,郁闷的是,这三种方案,都比我不用连接池的数据要慢,可能是我的测试不准确吧?我只做了连续100000次的数据插入操作。
 
原创粉丝点击