# 最开始的思考
插曲:因某些原因回到洛阳后,本土it企业均为中小企业(小于500人),人员技术水平参差不齐,那么对于这类公司技术这块到底该怎么做?沿用大公司的架构还是顺从当前公司开发人员的理念,到底怎么做才是最好,曾经纠结过很长时间。但后来随着时间变化,领悟一个道理:需要找到一个折中的办法,不能完全照搬大公司架构,要符合企业的情况,形成特色(就像祖国一样,具有中国特色的社会主义),特色很重要!
# 不用manager层的弊端
因为特色,所以在分层这块,最终还是选择阿里的架构:分为四层,如下:
- controller
- service
- manager
- dao
传统的SpringMVC架构,分为Controller,Service,DAO三层。Controller控制页面逻辑,业务逻辑和事务在Service层,数据库操作通过编写sql在DAO层。
其实这样的架构非常简洁也容易上手,但是无法对DAO层的sql进行控制,弊端如下:
- service层代码臃肿
- service层事务嵌套,导致问题狠多
- dao层参杂业务
- dao层sql语句复杂,关联查询比较多
- dao层经常改来改去
# 用manager层的优势
引自《阿里规约》:
Manager 层:通用业务处理层,它有如下特征:
- 对第三方平台封装的层,预处理返回结果及转化异常信息;
- 对 Service 层通用能力的下沉,如缓存方案、中间件通用处理;
- 与 DAO 层交互,对多个 DAO 的组合复用。
其他: 4. 复杂业务,service提供数据给Manager层,然后把事务下层到Manager层,Manager层不允许相互调用,不会出现事务嵌套。 5. 专注于不带业务sql语言,也可以在manager层进行通用业务的dao层封装。 6. 避免复杂的join查询,数据库压力比java大很多,所以要严格控制好sql,所以可以在manager层进行拆分,比如复杂查询。
作者简介: 卓大 (opens new window), 1024创新实验室主任,混迹于各个技术圈,熟悉点java,略懂点前端。
![]() | ![]() | ![]() |
加“卓大”微信,入群 | 关注 1024创新实验室! | 我要请 1024创新实验室 喝胡辣汤~ |