我正在申请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
.
你怎么认为?
我很感激你的回答。谢谢:)
1条答案
按热度按时间fsi0uk1n1#
这是正确的,甚至是必要的。聚合应该对无处不在的语言进行建模,而数据库字段名是关于持久性的,并且有其他单独的目标和需求。
做作的例子;数据库可能会将全名保存为“firstname”、“lastname”,但聚合只有一个string.fullname,它是值的串联。它不关心他们是如何坚持的,甚至在哪里。