Want to clear some confusion. I have applicationContext.xml.
Question 1: Whats the difference between 1 & 2. Are they both same with different approach?
Question 2:
I asked question on Spring forum regarding some problem. Onething he mentioned about pooling is below
if you need/want to use the internal connection pooling for hibernate
I would advice against it and simply configure a datasource which
supports connection pooling and inject that into your
sessionfactorybean.
internal connection pooling for hibernate = This is number 2 below. Right?
simply configure a datasource which supports connection pooling and inject that into your sessionfactorybean = This is number 1 below. right?
1# –
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="maxActive" value="100"/>
<property name="maxIdle" value="30"/>
<property name="maxWait" value="16000"/>
<property name="minIdle" value="0"/>
</bean>
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="annotatedClasses">
<list>
<value>com.mkyong.customer.model.Customer</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.generate_statistics">true</prop>
</props>
</property>
</bean>
2# –
Pooling and connection info is in hibernate.cfg.xml
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
</bean>
Answer 1:
Both approaches are the same. By default , hibernate reads the configuration from
classpath:hibernate.cfg.xmlto buildSessionFactory.LocalSessionFactoryBeanjust allows you to setup hibernate configuration insideapplicationContext.xmlinstead ofhibernate.cfg.xml.If a same property is specified in both files , depending on the property , it will has addictive effect or the properties specified in
applicationContext.xmlwill take higher priority such that those values inhibernate.cfg.xmlwill be ignored.For method 1,
annotatedClassesandhibernatePropertiesshould have the addictive effect with the corresponding values inhibernate.cfg.xml. The DBCP dataSouruce inapplicationContext.xmlshould cause the related properties inhibernate.cfg.xmlbeing ignored.Answer 2:
For method 2 , if you don’t specify any properties of
LocalSessionFactoryBean, all the hibernate configurations are specified by thehibernate.cfg.xml. If there are no connection pool configured inhibernate.cfg.xml, hibernate’s own connection pooling algorithm is used by default , which is quite rudimentary and not intended for use in a production system, or even for performance testing.