我的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数据源?
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]
看log org.hibernate.connection.ConnectionProviderFactory - Initializing connection provider后面是什么
不信的话,用jconsole链接到你得服务器上,看mbean,c3p0有自己的mbean
怎么链接,在启动参数上面加上-Dcom.sun.management.jmxremote,然后去java/bin目录下面着jconsole,然后顺疼摸瓜
org.hibernate.connection.C3P0ConnectionProvider
指定connection的提供者,这里这个配置的,肯定就是使用了c3p0了。
1、有没有使用c3p0,可以调低日志显示级别,看日志
2、hibernate.connection.provider_class设定了连接器的提供者, 即使用什么连接池, 就对应哪个提供者.
该提供者会调用指定连接池的相关类、方法, 设置相关参数, 连接数据库的时候就会用到
个人拙见
信息 = info
这不是警告,警告是warn
warn = 警告