Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Falta de atomicidade no serviço da aplicação

Olá professor, percebi ali no fim do serviço da aplicação a utilização de 2 awaits soltos na hora de salvar os agregados. Minha duvida é: Não devemos nos preocupar no caso em que o último agregado não seja salvo por algum erro eventual e o primeiro seja salvo com sucesso? Não deveriamos ter aqui algum recurso que permita atomicidade?

Me gerou esta dúvida pois parece valida pra mim essa preocupação, mas nada foi comentado no video e nem na descrição escrita na aula. Alias, ja tinha chegado em um ponto similar e utilizei um padrão de Work of Unit. Basicamente criei uma interface (no dominio algo parecido com repositories) que me permitia salvar a operação de save de um objeto, a operação de save de outro objeto e um metodo de commit, mas não sei se eh um bom caminho essa minha implementação. Abs.

1 resposta
solução!

Ei! Tudo bem, Matheus?

Pode não há garantia de atomicidade. Se o cartRepository.save(cart) funcionar e o orderRepository.save(order) falhar, você pode acabar com um estado inconsistente, como você apontou. E no cenário real é preciso tratar isso.

O motivo de isso não ter sido abordado na aula é mais didático, pois o foco ali é mostrar o papel do serviço de aplicação orquestrando regras, não entrar na infraestrutura de persistência e transações.

E a solução que trouxe com Unit of Work é sim um bom caminho.

Espero ter ajudado e continue se dedicando aos estudos, qualquer dúvida é só compartilhar no fórum.

Bons estudos e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado