java—使用不同于数据库对象的字段进行聚合是正确的吗?

kqlmhetl  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(413)

我正在申请ddd,我有些怀疑。我在读斯科特·米利的ddd书,我刚刚读了几章。
想象一下这样一个简单的域模型:

class Candidate
val id: CandidateId
val name:Name
val musicStylesPreferences: List<MusicStyle>
val sportPreferences: List<Sport>
val smoking: Boolean
enum MusicStylePreference
ROCK, METAL, POP, HIPHOP

其他物体是这样的。
如果我们想坚持 Candidate ,我的方法是这样的:


* DatabaseObject*

CandidateVO
val id: String
val name: String

MusicStylePreferenceVO
val candidateId: String
val StyleName: String

当我坚持 Candidate 对象时,我将保留在相应的表中,并且在生成聚合时,我将查询这些表。
我不确定这种方法是否正确,我还认为 MusicStylePreference , Smoking 等。。。不需要一致性和事务性(聚合的一些优点),可以在聚合之外 Candidate .
你怎么认为?
我很感激你的回答。谢谢:)

fsi0uk1n

fsi0uk1n1#

这是正确的,甚至是必要的。聚合应该对无处不在的语言进行建模,而数据库字段名是关于持久性的,并且有其他单独的目标和需求。
做作的例子;数据库可能会将全名保存为“firstname”、“lastname”,但聚合只有一个string.fullname,它是值的串联。它不关心他们是如何坚持的,甚至在哪里。

相关问题