Bom pessoal, no vídeo anterior a gente começou a falar sobre o Unit of Work, tá? A grande sacada do Unit of Work é que você consegue jogar objetos lá dentro, ele gerencia esses objetos e ele coordena as transações que devem ser realizadas em conjunto desse objeto, resolvendo inclusive problemas de concorrência, legal? Então como é que vai funcionar? Como é que funciona essa ideia aqui principal? O lance é o seguinte. O Unit of Work, conceitualmente, ele tem algumas funções que normalmente a gente implementa. Elas não necessariamente precisam estar com esse nome. Eu estou seguindo esses nomes pegando o screenshot do livro do Patterns. Então, o que é o Register New? Então, imagina que você vai criar um novo objeto, sei lá, vou criar um novo pedido. Então, toda vez que você criar um novo objeto, você vai ter que registrar esse objeto como Register New no Unit of Work. Então, daí o Unit of Work vai saber, opa, nesse caso aqui, eu vou dar um insert no banco de dados. Beleza? Agora, vamos imaginar que o seu pedido já existe e você vai fazer uma alteração no seu pedido. Então, nesse caso, você vai registrar esse seu pedido no register dirty. O que significa dirty? registrar esse seu pedido no register dirty o que que significa dirty o objeto ele já existe e o estado dele foi modificado em memória mas não é o mesmo estado que ele vai estar no banco de dados então significa que memória é uma coisa em banco é outra coisa então você registra e quando você dá um commit ele vai fazer um update ali para você o outro ponto que a gente tem aqui é o register clean que o que que significa você pega o dado recuperado né você fez uma consulta joga tudo lá no Unito a forte mas você vai perceber que esse registro ele não teve alteração no seu estado então o que que vai acontecer nada né ele não vai registrar no seu estado. Então, o que vai acontecer? Nada. Ele não vai registrar no banco de dados nenhuma alteração, nenhuma inserção. Outra coisa interessantíssima aqui é o Register Deleted. O que isso significa? Você recupera um registro, mas você quer deletar esse registro. Então, o que você faz? Não é que você deleta imediatamente. Você pega esse registro, marca ele como registros que precisam ser deletados. E aí dentro da transação do Unit of Work,erir, alterar, remover, né? Ou não fazer nada, elas estão ali no Unit of Work e elas são realmente muito importantes. Legal? E por último, a gente tem aqui o commit. O que o commit faz no final das contas? Ele pega todos esses objetos que você adicionou, então imagina que eu adiciono uma nova pessoa, adiciono um novo pedido, marco uma alteração de estoque e removo aquele produto como itens em destaque. Então perceba que nesse caso eu vou adicionar para o meu Unit of Work um novo objeto, eu vou adicionar objetos que alteram e eu vou adicionar objetos que eu vou deletar. E daí no final eu dou um commit, normalmente você dá um commit, um flush, e ele faz toda essa alteração no seu banco de dados como uma transação. Se algo der problema, ele dá um rollback e avisa para você, olha, não consegui realizar essa transação por conta desse tipo de problema. Então o Unit of Work funciona dessa forma e é um padrão extremamente utilizado aí no mercado e acredito que talvez você já deva ter trabalhado, mas é importante eu citar aqui o Unit of Work. Beleza?