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