Otherwise, you will exhaust the connection pool.
hibernate.connection.handling_mode=DELAYED_ACQUISITION_AND_RELEASE_AFTER_STATEMENT
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- configure an Atomikos JTA-aware datasource --> <bean id="datasource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close"> <!-- set an arbitrary but unique name for the datasource --> <property name="uniqueResourceName"><value>XADBMS</value></property> <!-- set the underlying driver class to use, in this example case we use Oracle --> <property name="xaDataSourceClassName"> <value>oracle.jdbc.xa.client.OracleXADataSource</value> </property> <property name="xaProperties"> <!-- set the driver-specific XADataSource properties (check your driver docs for more info) --> <props> <prop key="user">scott</prop> <prop key="password">tiger</prop> <prop key="URL">...</prop> </props> </property> <!-- how many connections in the pool? --> <property name="poolSize" value="3"/> </bean> <!-- configure Hibernate to use the Atomikos JTA and datasource for transaction control --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- NOTE: for hibernate 2, use the following class: org.springframework.orm.hibernate.LocalSessionFactoryBean --> <!-- add the mapped resources (hbm files) of your application --> <property name="mappingResources"> <list> <value>...</value> </list> </property> <!-- make sure that hibernate uses the Atomikos datasource (JTA enabled)! --> <property name="dataSource"><ref bean="datasource"/></property> <!-- configure hibernate to use Atomikos TransactionsEssentials --> <property name="hibernateProperties"> <props> <prop key="hibernate.transaction.factory_class"> com.atomikos.icatch.jta.hibernate3.AtomikosJTATransactionFactory </prop> <prop key="hibernate.transaction.manager_lookup_class"> com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup </prop> <!-- for hibernate 2, use the following: <prop key="hibernate.transaction.manager_lookup_class"> com.atomikos.icatch.jta.hibernate.TransactionManagerLookup </prop> --> <!-- add any other hibernate properties you need --> </props> </property> </bean> <!-- configure the Spring hibernate template with the session factory from above --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"><ref bean="sessionFactory"/></property> </bean> </beans>Also see http://fogbugz.atomikos.com/default.asp?community.6.3045.1 for a forum post describing possible issues with the connection release configuration of Hibernate.