#java #hibernate #hql-delete
#java — язык #переход в спящий режим #hql-удалить
Вопрос:
Я совсем новичок в гибернации, и у меня есть вопрос. В чем разница между удалением объекта с помощью запроса HQL и удалением объекта с помощью delete(...)
метода Session
класса?
Ответ №1:
Session.delete(...)
полезно только в том случае, если у вас уже есть ссылка на объект, который вы хотите удалить.
удаление по запросу полезно для удаления нескольких объектов в соответствии с определенными критериями, объектов, которые вы, возможно, ранее не загружали в сеанс.
Я считаю, что удаление по запросу фактически загружает каждый объект в сеанс и удаляет их по отдельности — кто-нибудь, поправьте меня, если я ошибаюсь в этом.
Комментарии:
1. Но оба делают целевые объекты временными?
2. @Patrick: Если эти объекты были ранее загружены в сеанс, да
3. Два других объекта имеют ссылки на объект, который я хочу удалить (в коллекциях). Может ли Hibernate удалить эти ссылки или я должен сделать это сам?
4. Он преобразует запрос в собственный запрос и выполняет его. Я думаю, что они не загружаются. Важным замечанием является то, что он не учитывает каскады
5. Я имел в виду ответ (последний абзац)