2010-06-09 48 views
10

我有一个Hibernate作为JPA提供者的Spring/JPA应用程序。我在春天通过配置C3P0数据来源:带Hibernate的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”。这是什么?这是我需要使用的东西吗?或者我已经有适当的配置?

+0

为什么它当然是[protocol droid](http://en.wikipedia.org/wiki/C3P0)。 – 2010-06-09 03:20:29

回答

10

hibernate-c3p0.jar提供了基于C3P0的Hibernate ConnectionProvider合同实现类org.hibernate.connection.C3P0ConnectionProvider。当您希望将C3P0用作Hibernate的独立连接池(通过hibernate.cfg.xml文件进行配置)时,您需要此工件。既然你使用Spring,你不需要它。

+0

是否有任何理由/优势可能意味着使用hibernate-c3p0版本是一个更好的主意,还是它们在功能上等同? – yochannah 2013-07-10 12:44:25

1

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

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

+1

它确实有效,但在Spring和休眠的世界中,人们不能太确定...... – HDave 2010-06-11 12:47:22

+0

你是什么意思,你不能太确定?它可以工作,也可以不工作。 – 2010-06-11 13:00:54