关于业务逻辑写在哪

来源:4-6 商品服务编码(中)

慕沐3161652

2018-10-01

老师我看到你的写法
例如一个列表查询功能:

可能该查询功能里面需要关联到了多张, 5,6,7,8张表的字段, 还有可能里面会有其它操作(例如分组聚合, 计算)

1. 方法一: SQL

select a.xx, b.xx, c.xx from a 
left join b on xx 
left join c on xx
// 分组聚合, 计算等.  

2. 方法二: Java

List aList = aRepository.queryList();
List bList = bRepository.queryListWhereXxIn(List params);
List cList = cRepository.queryListWhereXxIn(List params);
// TODO : 对aList, bList, cList进行分组, 计算, 拼装等
return resultList;

看了老师的写法, 虽然直接写大量sql比写很多代码简单点

逻辑到底写在sql里还是service代码里.

我没有通过大量的测试数据去测试究竟哪种速度快,
我想知道, 就从职责上看, 数据库适合于数据的简单存取, 持久化. DAO层方法尽可能的单一
而java代码(service)更适合于组合数据, 做业务逻辑和计算, 所以我喜欢方式二.
我想知道对吗? 老师

写回答

2回答

廖师兄

2018-10-06

你说的非常正确,这个观点我在《SpringBoot微信点餐》课程中说过了,我建议把数据库当做简单的存储,不要把计算的压力过多放在数据库,而应该放在java程序,因为java程序横向扩展非常方便,数据库就难了。

0
0

素客

2018-10-02

一般使用service组合会出现多次连接数据库,而使用sql直接查询出来一次就搞定,所以我认为使用sql更快

0
1
慕沐3161652
有连接池阿
2018-10-02
共1条回复

SpringCloud Finchley(M2+RELEASE+SR2)微服务实战

SpringCloud组件实现微服务,【已升级Finchley.Release】

5668 学习 · 2489 问题

查看课程