I’ve read that an aggregate should be encapsulated by its aggregate root. The aggregate should not exist if the aggregate root does not exist and we should access the aggregate though its root only.
Considering an example: i have a video website with a Few video and those videos can potentionally have lots of comments.
It seems to me that the video is the aggregate root and the comment is the aggregate, since a comment wouldn’t make sense without a video.
But how would i retrieve the comments without loading them all from the database? That would be a big performance hit. Lazy loading could be a solution but i’ve read that it is not recommended.
Comment could be its own aggregate root, so i can query it independently, but that would break the “existence without root” rule, right?