请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么OrderRepository返回的是领域对象Order而不是OrderDo呢?

老师OrderRepository为什么返回的对象是Order而不是OrderDo呢?如果Order中包含其他领域的值对象,是不是就不能直接调用Mapper查询而是需要调用其他领域的Service对领域对象完成服务编排和组合呢?这么做是否就违反了仓储的职责呢?

正在回答

1回答

前面课程我们有讲过命名规范,我们课程里,Do表示data object,而不是domain object,data object处于基础设施层,是从存储层拿出来的数据对象,而不是领域对象。资源库扮演的是实体仓库的角色,返回的只能是实体,所以订单资源库只能返回订单实体,也就是Order对象。

0 回复 有任何疑惑可以回复我~
  • 提问者 奋斗的小鸟丷 #1
    明白了老师,可是后面的问题还是没说清楚,假设Order中的commodities中的某些字段信息需要从商品服务中获取,那是不是需要在OrderRepository进行一些远程调用来获取这些信息最终装配出一个完整的实体信息呢?
    回复 有任何疑惑可以回复我~ 2021-12-14 09:02:26
  • 是的,这样做没有问题,可以在资源库的实现里访问远程服务。
    回复 有任何疑惑可以回复我~ 2021-12-14 12:07:18
  • 只要没有违反资源库作为实体仓库的职责,以及整洁架构或者分层架构的架构原则就没有问题。所以我认为在资源库的实现里访问远程服务里没有任何问题。甚至极端情况下,资源库的实现只访问远程服务都没有问题,比如把外部商品库封装成内部商品库。
    回复 有任何疑惑可以回复我~ 2021-12-14 12:12:30
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信