user401445
user401445

Reputation: 1014

Configuring properties via datasource vs configuring them via hibernateProperties

What is the difference between using datasource and using hibernateProperties. I want to use c3P0 with spring in my app. I found 2 ways to do so but I'm unable to understand the difference between the two

First:

<bean id="sessionFactory"
          class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" 
          depends-on="dataSource">
        <property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
            <props>

                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.format_sql">false</prop>
                <prop key="hibernate.use_sql_comments">false</prop>


            </props>
</property>

<bean id="dataSource" destroy-method="close"
        class="com.mchange.v2.c3p0.ComboPooledDataSource" >
        <property name="maxPoolSize" value="10" />
        <property name="numHelperThreads" value="5" />


</bean>

Second:

<bean id="sessionFactory"
              class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" 
              >

    <property name="hibernateProperties">
                <props>


            <property name="hibernate.c3p0.maxSize" value="100" />
            <property name="hibernate.c3p0.numHelperThreads" value="5" />>


                </props>
    </property>
    </bean>

Upvotes: 0

Views: 1832

Answers (1)

M. Deinum
M. Deinum

Reputation: 124898

The first you get a Spring managed datasource, which you can also use for a JdbcTemplate or other work.

The second you get a hibernate managed datasource which is not reusable by Spring.

I strongly suggest the first approach as it also makes it quite easy to replace your datasource for testing (by replacing it with an in-memory database) or to replace it with a JNDI lookup.

Upvotes: 2

Related Questions