如何避免在存储库和域层中重复?

时间:2018-08-11 16:30:45

标签: java repository domain-driven-design

让我们想象一下,我们有一个Person类,以及两种不同的情况:

1)我们需要从数据库中获取所有成年人用户
2)我们需要将人组分为两个-成人和否

因此,在第一种情况下,我宁愿使用where子句在存储库层中执行。
{{1}}

在第二种情况下,我有一种方法可以确定是成年人还是不成年人。

在这种情况下,如何避免sql和java代码中的逻辑重复?

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案:

  • isAdult之类的属性添加到Person实体中,可以将其计算为属性(return age>18),这是您的逻辑所在的单一位置
  • isAdult值存储在数据库中
  • 当需要从数据库中获取所有成年人时,您只需查询Select * from person where isAdult=1
  • 在逻辑上需要区分成年人时,只需使用属性if (person.isAdult()) ...