Итак, я получаю несколько экземпляров определенного объекта с помощью id
for(Integer songId:songGroup.getSongIds())
{
session = HibernateUtil.getSession();
Song song = (Song) session.get(Song.class,id);
processSong(song);
}
это генерирует SQL-запрос для каждого идентификатора, поэтому мне казалось, что я должен сделать это в одном, но я не мог найти способ получить несколько объектов за один вызов, кроме как запустив запрос. Поэтому я написал запрос
return (List) session.createCriteria(Song.class)
.add(Restrictions.in("id",ids)).list();
но если я разрешаю кэширование второго уровня, это не означает, что мой старый метод сможет вернуть объекты из кеша второго уровня (если они были запрошены ранее), но мой запрос всегда будет поступать в базу данных.
Каков правильный способ сделать это?