Русскоязычное сообщество Spring-разработчиков.
Habr: bit.ly/433IK46
YouTube: bit.ly/4h3Ci0x
VK: bit.ly/4hF0OG8
Rutube: bit.ly/4b4UeX6
Яндекс Музыка: bit.ly/3EIizWy
Чат для общения: @spring_aio_chat
По вопросам сотрудничества: @befayer
Post #1024
7.55K

❌ Почему merge в Hibernate почти всегда лишний (и чем его заменить)
Чаще всего merge в Hibernate – это лишний
Эту проблему и пути её решения отдельно обсуждали на докладе в рамках Joker Фёдор и Илья.
Встречается это в типичном флоу:
Внутри
Отдельная боль -
Не отходя от кассы 🤓
Конечно же, про подобные и более сдожные темы (
📎 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/1020426/
Чаще всего merge в Hibernate – это лишний
SELECT. И это не про сохранение, а про перенос состояния detached-объекта в текущий Persistence Context.Эту проблему и пути её решения отдельно обсуждали на докладе в рамках Joker Фёдор и Илья.
Встречается это в типичном флоу:
findById -> setX -> save. Внутри
@Transactional загруженная сущность уже managed, а UPDATE и так уйдет в момент flush. А вот save в Spring Data JPA нередко уходит в merge и может добавить лишние чтение или копирование.Отдельная боль -
CascadeType.MERGE (или ALL): merge проходит по графу связей, растут накладные расходы и потенциальные SQL.Не отходя от кассы 🤓
Конечно же, про подобные и более сдожные темы (
@BatchSize, пагинация без OFFSET, StatelessSession/Bulk API, Soft Delete, multi-tenancy, outbox и т.д.) у нас есть собственный лекториум, где Михаил все расскажет и покажет.📎 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/1020426/
- 👍 21
- ❤ 9
- ⚡ 5
- 🤯 1












