【问题标题】:Spring configuration of C3P0 with Hibernate?带有Hibernate的C3P0的Spring配置?
【发布时间】:2011-03-01 11:33:13
【问题描述】:

我有一个使用 Hibernate 作为 JPA 提供程序的 Spring/JPA 应用程序。我通过以下方式在 Spring 中配置了 C3P0 数据源:

<bean id="myJdbcDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
      destroy-method="close">
  <!-- Connection properties -->
  <property name="driverClass" value="$DS{database.class}" />
  <property name="jdbcUrl" value="$DS{database.url}" />
  <property name="user" value="$DS{database.username}" />
  <property name="password" value="$DS{database.password}" />
  <!-- Pool properties -->
  <property name="minPoolSize" value="5" />
  <property name="maxPoolSize" value="20" />
  <property name="maxStatements" value="50" />
  <property name="idleConnectionTestPeriod" value="3000" />
  <property name="loginTimeout" value="300" />

然后我在 Spring 实体管理器工厂中指定了这个数据源如下:

<bean id="myLocalEmf"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
      <property name="persistenceUnitName" value="myapp-core" />
      <property name="dataSource" ref="myJdbcDataSource" />
 </bean>

但是,我最近在浏览 maven 工件时注意到“hibernate-c3p0”。这是什么?这是我需要使用的东西吗?还是我已经正确配置了这个?

【问题讨论】:

标签: hibernate spring c3p0


【解决方案1】:

org.hibernate:hibernate-c3p0 看起来就像您将 Hibernate 配置为直接使用 C3P0 时使用的模块。

假设您发布的配置适合您,您不应该需要它 - 是吗?

【讨论】:

  • 你不能太确定是什么意思?要么有效,要么无效。
【解决方案2】:

hibernate-c3p0.jar 提供类org.hibernate.connection.C3P0ConnectionProvider,它是Hibernate ConnectionProvider 合约的基于C3P0 的实现。当您想使用 C3P0 作为 Hibernate 的独立连接池(通过 hibernate.cfg.xml 文件配置)时,您需要这个工件。由于您使用的是 Spring,因此您不需要它。

【讨论】:

  • 是否有任何理由/优势可能意味着使用 hibernate-c3p0 版本是一个更好的主意,或者它们在功能上是否等效?
猜你喜欢
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-14
  • 2016-06-26
  • 1970-01-01
  • 2012-08-31
相关资源
最近更新 更多