通俗的讲法理解spring的事务实现原理

拿房屋买卖举例,流程:销售房屋 -- 接待员 -- 销售员 -- 财务

售楼处

存放着所有待售和已售的房屋数据(数据源 datasource

总经理

带领一套自己的班底,下属员工都听自己的,服务于售楼处(JPA框架,mybatis或jdbctemplate...不同的jpa框架都实现了jpa规范)

《客户接待成交守则》

①任何接待员可以接待任何客户,一位客户只能被一位销售员服务,除非销售员离职或放弃该客户,服务于售楼处(事务,被事务包裹的数据操作具有原子性、一致性、隔离性、持久性,为数据操作提供业务保证)

②客户夫妻俩之前没联系,同时被两个销售员服务,这时如何操作?(Spring事务的传播属性,默认PROPAGATION_REQUIRED)

③如果一个新销售员实在搞不定一个客户,那是不是可以考虑让一个老销售员来协助他促成这笔单子呢?(spring数据库隔离级别, MySQL InnoDB默认Repeatable-Read,隔离级别值为2,避免脏读,不可重复读,允许幻读)

《销售客户对应名单》

哪个客户属于哪个销售的数据名单,只要在该名单里能找到要查的客户记录,那么他的销售就受《客户接待成交守则》 规范(方法或类上标记了@Transactional,那么spring启动的时候就会扫描到他们,并且给他们加上事务操作,这是spring的声明式事务

具体参阅:

对于spring中事务@Transactional注解的理解

Spring事务管理实现方式之编程式事务与声明式事务详解(转)

《销售员售楼培训手册》

客户每次来售楼处,要先问客户是不是首次到店,首次到店给他联系销售员,非首次到店给他联系自己的销售顾问,即使双方都谈妥了,如果客户的贷款申请不下来,那这个单子也成交不了,还要把客户的定金退还给他。如果都正常就走财务结款成交。销售员要时刻铭记这些要求。(spring的事务aop,定义了何时开启事务,何时回滚事务,何时提交事务。)

具体参阅:

Spring里的aop实现方式和源码分析

java中代理,静态代理,动态代理以及spring aop代理方式,实现原理统一汇总

posted @ 2016-03-11 13:15  夏威夷8080  阅读(242)  评论(0编辑  收藏  举报