JPA persist e merge

Qual seria a diferenca entre persist() e merge() ??
E em cascata ??

Obrigado !

Persist - Torna uma inst√Ęncia persistente (gera um insert quando o contexto transacional for flusheado)

Merge - Re-sincroniza uma inst√Ęncia desatachada do contexto (serve para voc√™ reanexar uma inst√Ęncia que passeou fora do contexto transacional corrente).

Tente compreender como o contexto transacional funciona (o session do hibernate ou o EntityManager da JPA). Não crie na sua cabeça a falsa ilusão que um persist é um INSERT e nem que um MERGE é um update.

1 curtida

Apenas uma observação e corriga-me se estiver errado.

N√£o sei exatamente como funciona com JPA mas um merge no Hibernate n√£o re-anexa o objeto ao cache de primeiro nivel, apenas sincroniza as informa√ß√Ķes do objeto com o banco de dados.

Em JPA funciona da mesma forma?

O que coloquei foi conceitual. Para falar a verdade, o merge deixa a inst√Ęncia passada do jeito que ela est√°, pois o merge n√£o tem efeito colateral, mas o merge RETORNA a inst√Ęncia reanexada. Desculpe a falha.