Так что для операции у меня есть как минимум 2 sql запроса (n + 1 проблема?)
Проблема N + 1 возникает, когда вы извлекаете N сущностей (с 1 запросом), и для получения чего-либо необходимо выполнить дополнительный запрос для каждой сущности (всего N). Это не совсем так.
Я даже не говорю о каких-то не ленивых отношениях в машине, которые приведут к большему количеству запросов sql.
Что ж, если у вас есть график объектов, вам потребуется несколько запросов на удаление. Разве вы не счастливы, что Hibernate может каскадировать их для вас?
Я решил использовать HQL-запрос, который (...)
Во-первых, я не вижу смысла первого выбора (я думал, что вы хотите ограничить количество запросов).
Во-вторых, массовый HQL DELETE
действительно спасет SELECT
, но он не распространяется на связанные сущности, что может быть проблемой в вашем случае (поэтому вам придется обрабатывать отношения самостоятельно, если возможно).
Не уверен, что это подойдет вашим потребностям.
Но как кеш может реагировать на это
Hibernate сделает недействительными необходимые регионы после завершения «массовой операции».
См. Массовые операции для получения подробной информации и рекомендаций по их использованию.