AI && Java && Management
9 subscribers
20 photos
19 links
Для senior Java-разработчиков, архитекторов и тимлидов: AI, JVM, архитектура, эксплуатация и инженерное управление. Первичные источники, актуальные релизы и выводы для решений.

Автор — Андрей Овчаренко. Технический аудит: https://krot.name/
Download Telegram
Hibernate экономит код. Базе данных на это плевать

ORM отлично убирает повторяющийся persistence-код и связывает данные с объектной моделью. Но SQL, сеть и materialization никуда не деваются — просто становятся менее заметны в Java-коде. Магия закончилась на аннотациях.

100 orders + lazy collection в цикле: 1 root query + до 100 secondary selects = до 101 SQL.

Две to-many коллекции по 10 и 20 элементов: JOIN способен вернуть до 200 rows на parent. Hibernate ORM User Guide также фиксирует: EAGER не гарантирует один JOIN, несколько bags могут вызвать MultipleBagFetchException, а IDENTITY отключает JDBC insert batching.

Поэтому я смотрю SQL statements, rows, план через PostgreSQL EXPLAIN и размер persistence context/flush, а не гадаю по красивым entities. Только потом выбираю JOIN FETCH, entity graph, batch fetch, DTO или native SQL.

Hibernate — инструмент. Делать вид, что он отменил SQL, — дорогая иллюзия.

#Java #Hibernate #JPA #SQL