В вопросе об опыте назовите только реально использованные подходы:
Использовал ли ты HQL, Native Query, JDBC напрямую? Батчинг в Hibernate?
В вопросе об опыте назовите только реально использованные подходы:
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В вопросе об опыте назовите только реально использованные подходы:
- HQL — запросы к сущностям и их свойствам через Hibernate.
- Native query — SQL, выполняемый через ORM, например для возможностей конкретной СУБД.
- JDBC — прямое управление соединениями, подготовленными запросами и результатами.
JDBC batching в Hibernate объединяет совместимые INSERT/UPDATE в пакеты, уменьшая число сетевых обращений. Это не превращает разные операции в один логический SQL-запрос.
Пример настроек:
hibernate.jdbc.batch_size=50
hibernate.order_inserts=true
hibernate.order_updates=true
В длинном цикле сохранения сущностей через persist() периодические flush() и clear() ограничивают размер persistence context. Операции выполняют в транзакции с обработкой ошибки и откатом.
Размер 50 — пример, а не универсальный оптимум или гарантия ровно 50 записей в каждом пакете. Бatching зависит от совместимости SQL и драйвера; генерация идентификаторов IDENTITY препятствует batching вставок в Hibernate. Результат проверяют по фактическим SQL и измерениям.