

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
Uma equipe de desenvolvimento de sistemas de uma autarquia federal está modelando o módulo de concessão de licenças ambientais utilizando Domain-Driven Design (DDD).
O domínio possui as classes
ProcessoLicenciamento, ParecerTecnico, Vistoria e DocumentoObrigatorio
O arquiteto definiu que a classe ProcessoLicenciamento atuará como Aggregate Root. Durante uma revisão de código, constatou-se que um desenvolvedor criou um repositório exclusivo para a classe Vistoria, permitindo que sistemas externos alterem o status de uma vistoria diretamente no banco de dados, sem passar pelas regras de validação contidas em ProcessoLicenciamento. À luz dos padrões táticos do DDD, a abordagem do desenvolvedor está incorreta porque viola o seguinte princípio:
todas as entidades de um mesmo contexto delimitado (Bounded Context) devem possuir seus próprios repositórios de persistência isolados
objetos externos ao Agregado não podem manter referências diretas para nenhum componente interno que não seja a Raiz do Agregado (Aggregate Root).
os Objetos de Valor (Value Objects) herdados por entidades secundárias devem ser persistidos em tabelas lógicas totalmente separadas.
a consistência eventual impede a execução de transações atômicas síncronas dentro das fronteiras de um mesmo subdomínio genérico.
os Serviços de Domínio (Domain Services) detêm a responsabilidade exclusiva de instanciar entidades que possuam identidade própria.