Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Aggregate

Oi mestre,

Entendi o conceito de aggregate, porém me surgiu uma dúvida: No treinamento realizamos a inserção dos telefones manualmente, caso fossemos implementar a inserção dos telefones contidos em um aluno teríamos que ter um "repositório"(coloquei entre aspas rsrs) de telefones com um CRUD básico para realizar as operações com telefones , não? Até mesmo para tudo não ficar em um método gigantesco de insert do aluno, ou talvez nem ter esse repositório, mas sim alguns métodos de CRUD compartilhados entre todos repositórios para fazer essas operações básicas de cada entidade. Você seguiria alguma dessas abordagens ou outra?

3 respostas
solução!

Ótima pergunta, Diego.

Persistência de Aggregates é algo bastante complexo.

A interface deve ser toda feita pelo Aggregate Root, no nosso caso, o Aluno. Ou seja, somente o Repositório de alunos seria utilizado. Mas o repositório de alunos poderia utilizar internamente um repositório de telefones para simplificar os métodos, ou simplesmente ter mais métodos privados.

Na prática, quando utilizamos um ORM, isso tudo fica abstraído pra gente. :-)

Imagine as nossas vidas sem um ORM rsrs

Um último detalhe que notei, pode ficar como dever de casa a implementação de um lazy loading, correto? Já que o Join está trazendo os estudantes com todos telefones carregados em memória e eu não posso querer isso sempre.

Pois é, Diego. Eu não implementaria um Lazy Loading na unha não.

rsrsrs

Eu deixaria 2 métodos separados mesmo. Um que traz os telefones e um que não traz. Mas, se quiser implementar um Lazy Loading, é um exercício bem interessante.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software