Я пытаюсь применить DDD, и у меня есть некоторые сомнения. Я читаю книгу Scott Millet DDD и только что прочитал главы Aggregates.
Представьте себе простую модель предметной области, подобную этой:
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
.
Что вы думаете?
Я ценю любой ответ. Спасибо :)