Я использую Hibernate 3.5.1 и EntityManager для сохранения данных (с JPA 2.0 и EHCache 1.5). Я могу получить запрос следующим кодом:HIbernate Entity Manager: как кэшировать запросы?
EntityManager em;
...
Query query = em.createQuery(...);
...
Теперь проблема заключается в том CreateQuery EntityManager (в) метод возвращает javax.persistence.Query, который, в отличие от org.hibernate.Query (возвращаемый CreateQuery в SessionFactory (в) метод), не имеет метода org.hibernate.Query.setCacheable().
Как же я должен кэшировать запросы с помощью EntityManager (или какой-либо другой части Hibernate)?
Спасибо за подсказки. Я буду использовать «магические строки с конкретными поставщиками» со строкой, импортированной из постоянного класса держателя (например, HibernateHintConstants), которая гарантирует, что сгенерирована ошибка компиляции, если я удалю Hibernate (при условии, что я помню, чтобы удалить класс с соответствующими константами к подсказкам Hibernate). – eold
@leden - строки уже находятся в org.hibernate.ejb.QueryHints, чтобы не изобретать колесо. – OrangeDog
Вы также можете добавить подсказки в аннотации @NamedQuery – OrangeDog