qunhao 2010-12-29 16:56
浏览 219
已采纳

hibernate配置c3p0的问题,有个配置属性的作用不清楚求解。

我的hibernate.cfg.xml文件

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- hibernate配置 -->
<hibernate-configuration>

<session-factory>
    <!-- 数据库方言 -->
    <property name="dialect">
        org.hibernate.dialect.MySQLDialect
    </property>
    <!-- 数据库连接字符串 -->
    <property name="connection.url">
        jdbc:mysql://localhost/java_demo
    </property>
    <!-- 数据库用户名 -->
    <property name="connection.username">root</property>
    <!-- 密码 -->
    <property name="connection.password">root</property>
    <!-- 数据库驱动 -->
    <property name="connectiosn.driver_class">
        com.mysql.jdbc.Driver
    </property>
    <!-- 是否显示执行的sql语句 -->
    <property name="show_sql">true</property>
    <!-- c3p0配置 -->
    <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
    <property name="hibernate.c3p0.max_size">50 </property>
    <property name="hibernate.c3p0.min_size">2 </property>
    <property name="hibernate.c3p0.timeout">5000 </property>
    <property name="hibernate.c3p0.max_statements">100 </property>
    <property name="hibernate.c3p0.idle_test_period">3000 </property>
    <property name="hibernate.c3p0.acquire_increment">2 </property>
    <property name="hibernate.c3p0.maxIdleTime">1800 </property >
    <property name="hibernate.c3p0.validate">true </property>
    <!-- 配置映射文件 -->
    <mapping resource="hibernate/c3p0/entity/Student.hbm.xml" />
</session-factory>

</hibernate-configuration>

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
我想知道这个配置是什么意思

我加上这个配置之后测试时会出现警告(虽然出现警告,但执行结果是正确的),不加这个配置的话就不会出现这个警告,但是一样一来不知道hibernate到底有没有用c3p0数据源。警告信息如下:
2010-12-29 16:14:24 com.mchange.v2.log.MLog <clinit>
信息: MLog clients using java 1.4+ standard logging.
2010-12-29 16:14:24 com.mchange.v2.c3p0.C3P0Registry banner
信息: Initializing c3p0-0.9.1 [built 16-January-2007 14:46:42; debug? true; trace: 10]
2010-12-29 16:14:24 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager
信息: Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@de79a485 [ c...
这个警告信息是什么意思?该如何处理?


最后问一下,怎么样测试才能测出hibernate到底有没有使用c3p0数据源?

  • 写回答

5条回答 默认 最新

  • beneo 2010-12-29 17:08
    关注

    hibernate.connection.provider_class

    这个是获取jdbc connection的class参数,一种plugin策略。

    相当于hibernate通过自己的class去调用c3p0,肯定有调用了。。

    此外,还有一种方式,通过dataSource,比较常用

    我的bonecp比c3p0更快。。

    [code="xml"]


    ${jdbc.driverClass}


    ${jdbc.jdbcUrl}


    ${jdbc.username}


    ${jdbc.password}


    ${jdbc.idleConnectionTestPeriod}


    ${jdbc.idleMaxAge}


    ${jdbc.maxConnectionsPerPartition}


    ${jdbc.minConnectionsPerPartition}


    ${jdbc.partitionCount}


    ${jdbc.acquireIncrement}


    ${jdbc.statementsCacheSize}


    ${jdbc.releaseHelperThreads}

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="lobHandler" ref="defaultLobHandler"/>
        <!--
        <property name="packagesToScan" value="de.schaeftlein.dev.spring.rest.domain"/>
        -->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.connection.url">${jdbc.jdbcUrl}</prop>
                <prop key="hibernate.connection.driver_class">${jdbc.driverClass}</prop>
                <prop key="hibernate.connection.password">${jdbc.username}</prop>
                <prop key="hibernate.connection.username">${jdbc.password}</prop>
                <prop key="hibernate.connection.autocommit">${jdbc.autoCommit}</prop>
                <prop key="hibernate.connection.release_mode">${hibernate.release_mode}</prop>
                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl}</prop>
                <prop key="hibernate.transaction.auto_close_session">${hibernate.auto_close_session}</prop>
                <prop key="hibernate.current_session_context_class">${hibernate.current_session_context_class}</prop>
                <prop key="hibernate.cglib.use_reflection_optimizer">false</prop>
                <prop key="hibernate.bytecode.use_reflection_optimizer">false</prop>
                <prop key="hibernate.bytecode.provider">javassist</prop>
                <prop key="hibernate.transaction.flush_before_completion">${hibernate.flush_before_completion}</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> 
            </props>
        </property>
    </bean>
    

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办