使用JOTM实现分布式事务管理(多数据源)

使用spring和hibernate可以很方便的实现一个数据源的事务管理,但是如果需要同时对多个数据源进行事务控制,并且不想使用重量级容器提供的机制的话,可以使用JOTM达到目的.

JOTM的配置十分简单,spring已经内置了对JOTM的支持,
一.

 
 
   
 

首先定义如上的两个bean,利用spring对JOTM进行初始化.

二.接下来定义所需的数据源


oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@192.168.1.224:1521:speed



5
2
stms
speed

通过如上的两个bean定义一个数据源,所需的jar在下载的jotm的压缩包中都以自带.

三.如果还需要定义多个数据源的话,就照如上的格式定义即可.

四.定义好数据源后,我们再定义相应的sessionFactory

     
     
        
          com/vtradex/edi/example/om/oracle/Example.hbm.xml
        

     

     
        
          org.hibernate.dialect.Oracle9Dialect
        

     

   
   
  

   
mySessionFactory使用dataSource这个数据源

五.定义一个进行事务控制的代理
          class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
       
           
       

       
           
       

   

六.以上都是一些准备工作,完成后,接下来就可以对我们自己的需要进行事务控制的bean进行定义了

     
 


     
 

   
       
           
                   
                   
           

       

   

hqlExecutor1使用mySessionFactory来对数据源进行操作
而hqlExecutor2使用mySessionFactory2来对数据源进行操作

tt这个bean中使用了hqlExecutor1和hqlExecutor2来进行操作.

================================================================================

看一下配置实例




 
 
 
   
 

 

oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@192.168.1.224:1521:speed



5
2
stms
speed

 
   
     
     
        
          com/vtradex/edi/example/om/oracle/Example.hbm.xml
        

     

     
        
          org.hibernate.dialect.Oracle9Dialect
        

     

   
   
  

   
  

oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@192.168.1.224:1521:speed



5
2
swms
speed

   
     
     
        
          com/vtradex/edi/example/om/oracle/Message.hbm.xml
        

     

     
        
          org.hibernate.dialect.Oracle9Dialect
        

     

   
   
  

   

 
     
 

 
              class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
       
           
       

       
           
       

   

   
       
           
           

       

   

你可能感兴趣的:(bean,class,spring,oracle,hibernate,list)