Hibernate c3p0和DBCP连接池机制

时间:2012-07-05 15:58:41

标签: hibernate tomcat c3p0 apache-commons-dbcp

如果你没有在hibernate.cfg.xml中指定设置什么是默认连接pooler,你如何更改它? 这是hibernate配置

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/POM_IVR</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">XXX</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
    <mapping resource="com/SurveyResults.hbm.xml"/>

  </session-factory>
</hibernate-configuration>

问题 1. c3p0 jar是否附带hibernate3?

2.如果你没有指定c3p0,hibernate是否使用它的默认连接pooler(你怎么知道它没有使用默认值,是否有参数)或DBCP?

3.如何为我的Web应用程序修改DCBP参数我是否必须在catalina或hibernate配置中更改上下文文件conf / catalina / locahost / Applicationame.xml,我需要更改/添加它做什么我必须指定用户名和密码或只是参数?

4.可以解释一下这是如何工作的,hibernate请求连接,tomcat会从池中获取连接吗?如果指定c3p0,DBCP是否被旁路?

5.如果我有2个使用相同表/用户名/密码的Web应用程序,该怎么办?如果他们拥有自己的DBCP,c3p0 jar,那么被征用的是什么?如果将conf / context.xml应用于所有应用程序,您可以为DBCP指定全局参数以供应用程序使用吗?

这与mysql的8小时连接超时有关,我不想更改数据库参数。

1 个答案:

答案 0 :(得分:4)

是的,c3p0是hibernate的一部分: http://www.informit.com/articles/article.aspx?p=353736&seqNum=4

清单10.2示例Hibernate c3p0配置

hibernate.c3p0.max_size = 1
hibernate.c3p0.min_size = 0
hibernate.c3p0.timeout = 5000
hibernate.c3p0.max_statements = 100
hibernate.c3p0.idle_test_period = 300
hibernate.c3p0.acquire_increment = 2

我相信你的所有答案都在那里。