Hibernate Integration

With Spring

The advantage is that you don't need any JNDI server. The following XML snippet illustrates how to configure Atomikos TransactionsEssentials® 3.1 or higher with Spring and Hibernate.

<?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> 

Without Spring

See Hibernate 3 Standalone sample for an example application that integrates with Hibernate (without Spring). This approach requires a JNDI server.

With JPA

See http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html/transactions.html for how to configure the JPA - this page suggests that there should be NO factory class configuration, only a lookup class. So for Hibernate JPA, the factory must be omitted in the above config examples.

With JPA and Infinispan as the Cache

See http://javacodegeeks.blogspot.com/2010/06/gwt-spring-and-hibernate-enter-world-of.html for a blog post describing how to get this to work. spacer

Copyright © 2014 Atomikos BVBA. Transaction Management for Extreme Transaction Processing and SOA Environments serving ISV, Commercial, OEM and Open Source Markets
Site map RSS ATOM