Salve, Deus, beleza? Continuamos essa saga aqui no Domain During Design. Na última aula, nós entendemos o que são as entidades. Ela precisa estabelecer uma identidade para poder identificar aquele grupo de informações que nós estamos armazenando. E essas informações vão sendo fora a identidade. A identidade não altera, as outras informações vão sofrendo essas alterações ao longo do tempo. E é assim que a gente quer, a gente vai rastreando, inclusive a gente pode rastrear essa entidade, ela foi sofrendo aqui essas transformações. Mas a entidade em si, ela tem um outro aspecto, que são as regras de negócio. Se a gente deixar essa entidade pessoa ou essa entidade aqui de eventos da forma que elas estão, a gente continua com anemia. Da mesma forma. Não tem diferença. Mas dentro dessa pessoa Nós temos Uma operação de criar Você fala, não Você falou aqui em cima Que esse criar É questão lá de anemia Mas aí que é a visão Que a gente está contaminada que esse criar é questão de anemia. Mas aí que é a visão que a gente está contaminada dos ORMs. Para que eu gere uma pessoa, eu tenho que criar. Mas esse criar aqui, ele não vai trabalhar com banco de dados. Aqui, esse criar não vai trabalhar com o banco de dados. Ele não vai ter preocupações de armazenamento dessas informações. Ele, na verdade, vai manipular essas informações para poder ger essa pessoa aqui, eu preciso de um CPF, no mínimo, não preciso? Posso precisar de todas as outras informações, mas vamos pegar aqui pelo CPF. O CPF precisa ser válido. Onde que eu vou validar essa informação? Dentro da minha entidade. Então, ela é responsável ali na hora de fazer a criação de receber essas informações, peso, data de nascimento, nome. Então, eu vou receber essas informações, vou verificar se ela está no formato correto, se está na faixa de valores aceitável. Se eu estou recebendo data de nascimento, será que realmente é uma data? Isso fica também dentro da minha entidade. Eu posso não ter somente a operação de criar, eu posso ter um mudar nome. Posso ter um mudar nome aqui, porque o meu sistema uma pessoa pode mudar de nome e isso vai acarretar dependendo aqui um processamento em cima das minhas informações. Aquele tipo de entidade que a gente fica fazendo setter e getter, aquilo ali não é regra de negócio. Você só está criando encapsulamento para os seus campos. Isso aqui, quando eu olho para cá, aí sim eu tenho, aqui que eu tenho a expressividade. São as regras de negócio, são as operações da minha entidade. Ah, e o que seriam operações, então, para o meu evento? Eu tenho que criar o meu evento, certo? Eu tenho que criar o meu evento. Se ele deixar eu fazer outras coisas aqui, a gente adiciona outros. Eu tenho que criar o meu evento. Eu posso reservar um spot. É, eu reservar o spot, ele está dentro da minha entidade. O reservar não implica que eu vou ter o armazenamento aqui no banco de dados. Isso é uma outra preocupação. Eu tenho essa entidade e ela tem uma regra que eu vou receber o lugar específico que eu quero reservar. E aí... específico que eu quero reservar e aí eu tenho aqui o lugar id eu vou verificar se esse evento ainda permite que eu reserve o lugar eu tenho aqui uma data, por exemplo limite que está aberto para poder fazer reserva. Se esse evento tem alguma outra restrição, então isso aqui está expondo uma expressividade. Eu sei que esse evento tem essas operações. Normalmente o criar é sempre a operação que você precisa, porque é gerar esse objeto. Agora, as preocupações de salvar, elas ficam em outro lugar que a gente vai falar daqui a pouco. Você vai colocar todas aquelas funcionalidades, aquelas regras de negócio, e estão especificadas, elas vão ficar dentro da entidade. Pode não fazer muito sentido se você está tendo esse primeiro contato com o DDD agora, porque você está pensando muito em salvar. O salvar, na verdade, vai ser pegar o estado atual desse objeto com as informações dele e persistir no banco de dados. Agora, a questão de reservar, de cancelar reserva. Posso ter aqui várias regras de negócio. Cancelar reserva. Bloquear evento porque eu queira acontecer algum problema que eu não posso mais vender nada dele. Então, eu tenho uma ação de bloquear. E todas essas operações aqui elas têm incidência nos dados e isso aqui que é o modelo rico. elas têm incidência nos dados. E isso aqui que é o modelo rico. O que é muito difícil às vezes é você modelar essas operações. A gente vai aprender muito isso aqui na parte prática. Mas isso aqui, tudo que a gente viu, que a gente vê nos ORMs, tudo é anêmico. Criar, atualizar, excluir. Também uma outra dica é evite ficar colocando métodos muito genéricos como um update da vida. Porque isso aqui não demonstra expressividade. A gente não se update. Talvez pelos dados passados, beleza. A gente pode até entender um pouco do que está acontecendo, mas aquela operação ali tem que deixar claro o que vai acontecer naquela entidade. Porque update, tipo assim, você está só fazendo uma mudança nos dados, Tipo assim, você está só fazendo uma mudança nos dados? Não faz muito sentido. Beleza, pessoal. Então, vamos continuando aqui a nossa saga. É isso aí e até a próxima.