CliffJ 在 关于业务逻辑与数据访问分离的设计疑惑 中发帖
背景说明
本人 Java 后端实习仔一枚,最近任务是将 PHP 的订单模块一些功能重构为 Java。
背景是一个订单费用重算的功能,涉及差不多5-6个表的数据,以及部分 ERP 接口调用。 原 PHP 实现中,方法只接收订单号列表,在方法内部完成:
查询相关表数据->执行业务计算逻辑-> 更新数据库
也就是数据准备、业务计算、数据持久化都在一个方法里,我重构时大方向逻辑基本照抄,优化了一些内部for循环调dao查询和api接口查询,以及特殊平台处理抽离。
组长观点
组长观点:业务层所有都不应该操作表entity实体!!!,应该都先业务自己查后转为bo,然后给出需要更新的bo,再把bo转为实体,再交给数据层更新,给出的重构建议:
定义一个 BO/DTO,只包含费用计算所需字段
上层业务负责查询数据库并组装 BO
费用计算方法只接收 BO,修改并返回 BO
是否写库由上层业务自行决...