Кэширование запросов (как предложил skaffman):
Query query = manager.createQuery("SELECT i FROM ....");
query.setHint("org.hibernate.cacheable", true);
В случае сущностей я заметил, что этого недостаточно, чтобы аннотировать все сущности с помощью @Cache.Если ваша сущность имеет ссылку на другие сущности (помеченные @Cache), вы также должны включить эту аннотацию в верхнюю часть поля ссылки:
@Cache (usage=CacheConcurrencyStrategy.TRANSACTIONAL)
@Entity
public class EntityA {
@Cache (usage=CacheConcurrencyStrategy.TRANSACTIONAL)
private Set<EntityB> entitiesB;
}
@Cache (usage=CacheConcurrencyStrategy.TRANSACTIONAL)
@Entity
public class EntityB {
}
Я не знаю, является ли это общим правилом, но вВ моем случае, после того, как я добавил эти аннотации, все начало работать как положено.