Domain-Driven Design e um papo sobre “entidades”
Published: 2023-01-11 21:55:23

Deixa eu adivinhar, estava pesquisando sobre DDD é se deparou com uma parada chamada “entidade”, certo? Será que isso tem relação com entidades de filme de terror, hein? Vem comigo e vamos desmistificar isso.

Quando usamos um substantivo para explicar algo do nosso domínio, encontramos nossas entidades, por exemplo: Deve realizar um pedido, emitir uma nota, realizar um orçamento, salvar um pokemon (é isso mesmo haha).

As entidades são mutáveis, agregam objetos de valor e carregam uma IDENTIDADE. “tá mais o que seria essa identidade?”. Uma identidade é o que as diferenciam, por exemplo, se precisarmos comparar duas entidades, elas podem ter seus valores diferentes, porém se sua identidade for a mesma, logo elas são iguais, caso seja necessário recupera-la de um modelo de persistência é a identidade que utilizaremos para isso, uma identidade deve ser única e imutável. Se ela é imutável logo ela pode ser considerada como um objeto de valor.

Para encontrar a identidade, você precisa encontrar algo que você possa confiar que nunca mudaria, por exemplo, uma classe Pessoa sua identidade poderia ser representada pelo seu cpf ou um email único. Mas uma identidade pode ser gerada de algumas formas diferentes, como por exemplo, pode ser gerada pela própria aplicação usando um UUID (ou outro identificador único), ser gerarada a partir de várias partes da minha entidade, agregando em um objeto de identidade, gerada a partir do meu modelo de persistência (tome cuidado com isso, pois pode entrar questão de timing para gerar a identidade), pode até mesmo coletar do usuário, porém nesse caso você precisa ter mais cuidado. Mas tem várias formas de realizar isso, basta você ver o que melhor se encaixa no seu contexto.

Como foi visto sempre que falarmos sobre algo do nosso domínio e isso for um substantivo, pode indicar que estamos falando de uma entidade. Elas possuem uma identidade única que as representam no seu domínio atual e em outros bounded context e contém estado, pois podem mudar ao longo do tempo.

Segue post sobre [VO’s](https://dev.to/andrevitor103/domain-driven-design-e-os-famosos-value-objects-35fk), outro assunto fundamental do universo DDD…
Referências para estudos:

[Meu vídeo falando sobre o assunto :))](https://www.youtube.com/watch?v=kJYjmAj1vBM&t=1106s)

[Domain-Driven Design: Atacando as complexidades no coração do software
A comunidade de desenvolvimento de softwares reconhece que a modelagem de domínios é fundamental para o design de…
www.amazon.com.br
](https://www.amazon.com.br/Domain-Driven-Design-Eric-Evans/dp/8550800651/ref=asc_df_8550800651/?tag=googleshopp00-20&linkCode=df0&hvadid=379739109739&hvpos=&hvnetw=g&hvrand=15262603459976817279&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1031693&hvtargid=pla-809277038576&psc=1)

[Implementando Domain-Driven Design apresenta uma abordagem completa para o entendimento de domain driven design (DDD), a…
www.amazon.com.br
](https://www.amazon.com.br/Implementando-Domain-Driven-design-Vernon/dp/8576089521/ref=asc_df_8576089521/?tag=googleshopp00-20&linkCode=df0&hvadid=379748659420&hvpos=&hvnetw=g&hvrand=15262603459976817279&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1031693&hvtargid=pla-460804278877&psc=1)

[VO’s e entidades](https://www.youtube.com/watch?v=6Pjod34OCnE)

[O que é DDD — Domain Driven Design
“É um conjunto de princípios com foco em domínio, exploração de modelos de formas criativas e definir e falar a…
fullcycle.com.br](https://fullcycle.com.br/domain-driven-design/)