Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

atualização total x atualização parcial

Não entendi a diferença entre o método PUT e o PATCH (atualização total x atualização parcial), pois reparei que usando qualquer um dos 2 o spring.jpa monta a instrução sql (SET) com todos os atributos contidos no DTO, entendo dessa forma que mesmo se alterar apenas um atributo, todos os outros também irão trafegar juntos na instrução SET, é isso mesmo? Se esse meu entendimento está correto, poderá haver uma perda de performance num processo de atualização de vários registros quando a tabela contiver muitos atributos. Tem alguma forma de configurar o spring.jpa, para montar a sql apenas com os campos que tiveram alteração?

2 respostas
solução!

Olá Álvaro, tudo bem?

O método PUT é geralmente usado para atualizações totais, ou seja, quando todas as informações do recurso devem ser enviadas para a API via body (geralmente JSON) para que o recurso seja atualizado. Já o PATCH é usado para atualizações parciais, ou seja, quando apenas algumas informações do recurso precisam ser atualizadas.

Em relação à instrução SQL gerada pelo Spring JPA, ela geralmente inclui todos os atributos do DTO, independentemente de estarem sendo atualizados ou não. No entanto, é possível usar a anotação @DynamicUpdate para instruir o Hibernate a gerar apenas a parte da instrução SQL que atualiza os campos que realmente mudaram, e não todos os campos do objeto. A anotação @DynamicUpdate faz com que o Hibernate gere a instrução SQL dinamicamente, incluindo apenas os campos que foram alterados desde a última vez que o objeto foi carregado do banco de dados. Isso pode melhorar significativamente a performance em cenários onde muitos campos são atualizados, mas apenas alguns deles mudam na maioria dos casos. É importante notar que a anotação @DynamicUpdate só funciona em conjunto com a anotação @Transactional para garantir que o Hibernate possa detectar as mudanças no objeto antes de gerar a instrução SQL.

obrigado pelo retorno