Hibernate merge: начали за здравие, закончили за упокой
Я уже давно хотел на этот счет написать статью. Она короткая,но имхо она нужна. Давайте с места в карьер: merge в Hibernate это не универсальный save , и чаще всего он Вам не нужен . На самом деле, если абстрагироваться, то это специализированная операция для случая, когда у вас есть detached-сущность , и вы хотите перенести ее состояние в текущий Persistence Context. Проблема в том, что на практике merge очень часто используют для апдейта любой сущности ( Spring Data JPA иногда так делает ) и как следствие получают лишние SQL-запросы. Ниже разберем на мой взгляд главное - почему именно так происходит , где merge действительно нужен, а где он превращается в антипаттерн (P.S да почти везде).
