模式 Dao Service Control servcie异常 control抛异常 期望 结果 
单表模式 只读 / / / / 无法写入 无法写入
只读 写事务 / / / 写入 写入
只读 写事务 / / 回滚 回滚
只读 写事务 / / 回滚 回滚失败,数据写入成功
只读 / 写事务 / / 写入 写入
只读 / 写事务 / 回滚 回滚
只读 / 写事务 / 回滚 回滚
只读 写事务 读事务 / / 写入 以Control读事务为准,无法写入
只读 读事务 写事务 / / 写入 以Control写事务为准,写入成功
模式 Dao Service Control servcie异常 control抛异常 期望 结果 
双表,
双service,
单control方法
只读 / / / / 无法写入 无法写入
只读 A,B 写事务 / / / 都写入 都写入
只读 A,B 写事务 / A 异常,B,正常 / 都回滚 A回滚, B写入
只读 A,B 写事务 / A,B 均异常 / 都回滚 都回滚
只读 / 写事务 / / 写入 写入
只读 / 写事务 A 异常,B,正常 / 都回滚 都回滚
只读 / 写事务 A,B 均异常 / 都回滚 都回滚
模式 Dao Service Control servcie异常 control抛异常 期望 结果 
双表,
双service,
A,B,C 三control方法
C 执行A,B方法
只读 / / / / 无法写入 无法写入
只读 / A,B,C 均写事务 / / 都写入 都写入
只读   A,B,C 均写事务 A 异常,B,正常 / 都回滚 都回滚
只读   A,B,C 均写事务 A,B 均异常 / 都回滚 都回滚
只读 / A,B写事务,C无事务 / / 都写入 无法写入
只读 / C事务,A,B无事务 / / 都写入 都写入
只读 / C事务,A,B无事务 A 异常,B,正常 / 都回滚 都回滚
只读 / C事务,A,B无事务 A,B 均异常 / 都回滚 都回滚
只读 / C事务,A,B无事务 / A 异常,B,正常 都回滚 都回滚
只读 / C事务,A,B无事务 / A,B 均异常 都回滚 都回滚
结论 1,事务注解的解析路径为:先找方法级,在找类定义级,在找父类定义
2,多事务嵌套,以最外层事务为准
3,事务的正确用法为,在类似control,facade等对外的最外层套上事务,service等中间过程不使用事务,dao层设置全部只读
4,最外层只要有涉及写操作,都必须套上写事务
posted on 2021-01-19 14:31  鳄鱼爸爸  阅读(118)  评论(0编辑  收藏  举报