Spring事务管理之编程式事务管理和声明式事务管理

编程式事务实现方式

模板事务(Transaction Template)的方式

– 此为Spring官方团队推荐的编程式事务管理方式

– 主要工具为Jdbc Template类

平台事务管理器(Platform Transaction Manager)方式

– 类似应用JTA UserTransaction API方式,但异常处理更简洁

– 核心类为:Spring事务管理的三个接口类以及Jdbc template类。辅助类为:TransactionDefinition和TransactionStatus

编程式事务实现案例

模板事务(Transaction Template)案例

– 步骤:获取模板对象,选择事务结果类型,业务数据操作处理

平台事务管理器(Platform Transaction Manager)案例

– 步骤:获取事务管理器;获取事务属性对象;获取事务状态对象;创建JDBC模板对象;业务数据操作处理。

编程事务总结

需要有效的数据源,具体数据源根据实际情况创建。

创建编程事务管理对象:

– 事务模板(Transaction Template)

– 事务管理器(plateform Transaction Manager)

业务逻辑处理

-基于JdbcTemplate完成业务处理

声明式事务实现原理

基于AOP模式机制,对方法前后进行拦截。

声明式事务实现方式

声明式事务管理的配置类型:

– 5种类型:独立代理;共享代理;拦截器;tx拦截器;全注释。(前三类2.0版本后不推荐使用)

声明式事务管理配置实现方式:

  


    
    
        
    
    
        
		
		
		
    
	  
	
    
      
      
      
        
      
    
    
    
    
    
    
    
    
        
        
            
            
            
            
        
    
    
    
        
        
    
  

编程事务管理和声明式事务管理区别

编程式事务运行用户在代码中精确定义事务的边界

声明式事务有助于用户将操作与事务规则进行解耦

– 基于AOP交由Spring容器实现

– 实现关注点聚焦在业务逻辑上

概括而言:

– 编程式事务侵入到业务代码里面,但是提供了更加详细的事务管理;而声明式事务由于基于AOP,所以既能起到事务管理的作用,又可以不影响业务代码的具体实现。

两种事务的选择

小型应用,事务操作少:

– 建议编程式事务管理实现:Transaction Template

– 简单、显示操作、直观明显、可以设置事务名称

大型应用、事务操作多:

– 业务复杂度高、关联性紧密,建议声明式事务管理实现

– 关注点聚焦到业务层面,实现业务和事务的解耦

通用事务问题的解决方案

事务管理器类型:

– 基于不同的数据源选择对应的事务管理器

– 选择正确的Platform Transaction Manager实现类

– 全局事务的选择:Jta Transaction Manager

本站所有文章均来自互联网,如有侵权,请联系站长删除。极客文库 » Spring事务管理之编程式事务管理和声明式事务管理
分享到:
赞(0)

评论抢沙发

评论前必须登录!