C3P0 won't start configured in Hibernate properties with Spring?
I'm using Hibernate 3.3.1GA and Spring 3.0.2 (and Maven from eclipse). I added c3p0-0.9.1 jar to classpath, and first tried this approach (configuring c3p0 within datasource bean):
<bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${ora.driverClassName}" />
<property name="jdbcUrl" value="${ora.url}" />
<property name="user" value="${ora.username}" />
<property name="password" value="${ora.password}" />
<property name="minPoolSize" value="${minPoolSize}" />
<property name="maxPoolSize" value="${maxPoolSize}" />
<property name="maxIdleTime" value="${maxIdleTime}" />
<property name="maxStatements" value="${maxStatements}" />
<property name="acquireIncrement" value="${acquireIncrement}" />
</bean>
This seems to work, as I can see c3p0 log in the eclipse console.
However, when I tried configuring it within hibernate sessionFactory properties, like this:<bean id="sessionFactory2" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" name="sessionFactory2">
<property name="dataSource" ref="dataSource2" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.query.substitutions">true 1, false 0</prop>
<!-- C3P0 properties (hibernate.c3p0.idle_test_period) -->
<prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>
<prop key="hibernate.c3p0.min_size">1</prop>
<prop key="hibernate.c3p0.max_size">20</prop>
<prop key="hibernate.c3p0.timeout">600</prop>
<prop key="hibernate.c3p0.acquire_increment">1</prop>
<prop key="hibernate.c3p0.max_statements">50</prop>
开发者_开发知识库 </props>
</property>
<property name="mappingResources">
<list>
...
</list>
</property>
</bean>
this doesn't work, c3p0 just won't start, no output, no error, nothing...
Actually, I don't find it so strange , because when I opened hibernate-core-3.3.1.GA jar from Maven repository, I couldn't find org.hibernate.connection.C3P0ConnectionProvider class. I tried some other versions of hibernate (3.3.2, 3.6.0), and still same thing was happening (no C3P0ConnectionProvider class was in jar file). I treid removing connection.providerclass property, no difference.I read a ton of related questions here and on other forums, and I can't really understand what's the problem. This is basically my problem, but I didn't find it useful. Am I missing something in the properties configuration, did I name them wrong or something?
Thanks.
Since you are using spring data source configuration (you refer dataSource2
bean), I think, session factory bean just sets data source and Hibernate is ignoring it's own connection configuration.
If first approach works, why would you want the second one?
Worked for me though. I used something like this
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
</props>
</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.driver_class">
${hibernate.connection.driver_class}
</property>
<property name="hibernate.connection.url">
${hibernate.connection.url}
</property>
<property name="hibernate.connection.username">
${hibernate.connection.username}
</property>
<property name="hibernate.connection.password">
${hibernate.connection.password}
</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.max_size">3</property>
<property name="hibernate.c3p0.timeout">1000</property>
<property name="hibernate.c3p0.max_statements">2</property>
<property name="hibernate.c3p0.numHelperThreads">3</property>
<property name="hibernate.c3p0.idle_test_period">60</property>
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
-Raaghu.K
精彩评论