1
resposta

Duvidas sobre o método merge()

Fiquei na duvida de porque no método atualizar das classes DAO a entidade passada para o método no estado DETACHED não foi feita atribuição do objeto retornado pelo método merge? O que eu acredito que deveria ter acontecido é o seguinte

public Produto atualizar(Produto produto) {
        return this.entityManager.merge(produto);
}

Desta forma estou retornando ao objeto passado por parâmetro a referência de um novo objeto no estado MANAGED. Mas por que não foi feito desta forma? Não entendi porque a abordagem apresentada no vídeo funciona. Já que ele está criando um novo objeto e não alterando a referência do objeto recebido por parâmetro.

1 resposta

Olá Thiago,

A ideia do atualizar como void é de que o objeto passado como parâmetro chegue com os atributos com os valores atualizados e no momento e no momento do flush/commit os novos valores ficarão atualizados no banco de dados. O Rodrigo comenta sobre este ponto no vídeo a partir do tempo 7:35 da aula "Estados no update da entidade".

Espero ter ajudado.