使用spring aop管理事务-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用spring aop管理事务

2016-03-19 10:04:59 2235 2

请教大家:dao层也就是数据库操作异常由上层处理,dao层不处理异常。使用spring aop管理事务,对service层进行代理,异常就回滚,然后数据库异常集中到controller中处理 ,这样理解对吗

取消 提交回答
全部回答(2)
  • 慕之
    2019-07-17 19:07:27

    这个问题首先涉及到工程中代码结构的问题,正常来说会分成以下四层, 从低向上依次是:
    dao层: 存放的是对底层数据库的操作
    service层: 对底层的封装, 比如对dao层的封装, 对外围接口的封装等
    biz层: 即业务层, 该层存放的是业务逻辑类
    controller层: 及入口层, 该层负责对请求参数进行校验, 调用biz层处理业务逻辑, 然后对结果进行组装。

    弄清楚了代码结构后再说一下异常处理原则: 能处理就早处理
    基于楼主的例子, db异常应该是在service层被spring aop事务管理器捕获了, 即就是说@Transactional应该放在service层的方法上。另外, 一旦回滚事务管理器还会抛出数据库回滚异常, 接着biz层就要捕获这个异常来判定db操作是否成功,进而执行不同的逻辑处理。

    0 0
  • a123456678
    2019-07-17 19:07:27

    spring 的回滚触发条件就是异常,dao也好,service也好,只要抛出了异常,就抛给controller层捕获处理1.确定什么异常需要回滚 -> DB插入失败(违背约束等) 一般都需要回滚 -> 业务异常 可以自己决定是否回滚,抛出不同类型的异常

    2.确定回滚的边界,你一个操作的失败需要回滚多少对DB的操作,这个和你代码的结构有关,如果你业务全集中在Controller,就可能需要把边界加载到C层,否则可以考虑加载到S层,甚至你可以考虑加载到一个S层下方的Support层

    0 0
添加回答
相关问答

1

回答

spring aop配置,求大神:报错

2020-06-06 17:37:55 222浏览量 回答数 1

1

回答

spring aop配置 - java报错

2020-05-30 10:42:12 194浏览量 回答数 1

0

回答

spring aop配置,求大神

2020-05-28 09:16:40 173浏览量 回答数 0

1

回答

spring的aop是否和struts2.xml里的param配置冲突?

2016-03-03 14:33:01 1963浏览量 回答数 1

1

回答

Spring Boot 2.5 实战开发 REST API,如何模拟淘宝订单接口?

2021-12-23 16:57:32 436浏览量 回答数 1

1

回答

Spring Boot 和 Spring Security 的配置方法是什么?

2021-10-21 22:32:52 176浏览量 回答数 1

1

回答

如何集成 Spring Boot 和 MyBatis ?

2021-10-21 22:35:44 166浏览量 回答数 1

1

回答

如何集成 Spring Boot 和 RabbitMQ ?

2021-10-21 22:36:20 109浏览量 回答数 1

1

回答

如何集成 Spring Boot 和 Kafka ?

2021-10-21 22:36:48 192浏览量 回答数 1

1

回答

如何集成 Spring Boot 和 RocketMQ ?

2021-10-21 22:38:13 205浏览量 回答数 1
+关注
0
文章
14879
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载