【问题标题】:Hibernate c3p0 and DBCP connection pooling mechanismHibernate c3p0 和 DBCP 连接池机制
【发布时间】:2012-07-06 02:00:39
【问题描述】:

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

<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是使用默认的连接池(怎么知道不是默认的,有参数)还是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小时连接超时有关,我不想更改数据库参数。

【问题讨论】:

  • btw 接受部分答案 :) 任何事情都会有所帮助

标签: hibernate tomcat c3p0 apache-commons-dbcp


【解决方案1】:

是的,c3p0 是休眠的一部分: 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 2019-03-03
    • 2013-05-28
    • 2015-01-22
    相关资源
    最近更新 更多