配制无限制的Spring事务管理

目录:V1.0
1.旧时的痛
2.光明来临前的黑暗
3.欢迎救世主


注:可自由转载,转载时需说明出处并请保持原样。

1.旧时的痛

为什么说配制无限制的Spring事务管理呢,估计肯定有哪位高手看过标题之后就会奇怪,配制事务管理还要有什么限制吗?
当然对您这样的高手当然是运用自如。但是还是和很多初识者甚至有很长的工作经验的朋友的老鸟对Spring配制只停留在spring1.x
阶段,并且仅限于配制Spring+Hibernate的事务管理。
最经典的Spring+Hibernate的配制是这样的:
com/ecds/hibernate/EcdAuthlistdata.hbm.xml com/ecds/hibernate/PcdRediscountwithcb.hbm.xml PROPAGATION_REQUIRED,readOnly PROPAGATION_REQUIRED,readOnly PROPAGATION_REQUIRED,readOnly PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED,readOnly PROPAGATION_REQUIRED,-Exception
   
   
在使用时为每个service加入事务模版,其实这种方式已经很方便了,
但是限制了使用者的视野,让很多初学者误认为Spring的事务只针对Hibernate准备的。
这是Spring1.0时代的产物,深深的留下了持久层框架的烙印。


2.光明来临前的黑暗
实际上Spring提供了多种事务管理器以供使用,而其中的一种才是Hibernate的,如下:

事务管理器的实例

 

目标

 

Org.springframwork.jdbc.datasource.DataSourceTransactionManager

 

用DBC的 DataSource 去管理事务

 

Org.springframwork.orm.hibernate.HibernateTransactionManager

 

当持久机制是Hibernate时的事务管理器

 

Org.springframework.orm.jdoTransactionManager

 

当持久机制是JDO时的事务管理器

 

Org.springframework.transaction.jta.JtaTransactionManager

 

用JTA管理事务

 

Org.springframwork.orm.ojb.PersistenceBrokerTransactionManager

 

当持久机制是apache的OJB时的事务管理器


也就是说以下配制中的class使用不同的事务管理器可以应用在不同的持久层机制上,其中的 DataSourceTransactionManager是最为通用的管理器。
有很多人在论坛里问:在Hibernate中是这样配制事务管理的,那么在某某下是如何配制呢,问的人不深问题的本身,而是只注重于解决事情的方式上。
当然这时用数据源的方式不是用sessionFactory,这种情况下就是在Spring1.x下的通用方式。






 

3.欢迎救世主

下面来介绍一下在Spring2.x达到相同的通用方式,并且配制起来更简洁和灵活的方式,当然和上面一样通用的方式就要使用通用的数据源( DataSource管理器)。


        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    







   
   



    
        
    
   
你会发现根本不需要事务模版了,由正则表达式来限定对Service的事务管理:pointcut="execution(* *..service.*Manager.*(..))" 
这样的方式是不是使你忘记了Spring中使用了什么持久层框架,是的,这时你就自由了!~
是不是想问我用了什么框架,我可以很负责任的告诉你是iBatis,你是不是没有看出来呢
下面是Service的配制,在Service中注入Dao,在Dao中注入SqlMapClientFactoryBean。


            
                 
           
              
                   
        
    


        
        
        
        
    


        
        
    


        
            
        
    
 
好了,到些为止吧。
由于个人的技术和知识水平有限,难免有疏漏之处,请指正!

 

你可能感兴趣的:(SSH)