JPA學習筆記(13)——查詢快取
阿新 • • 發佈:2019-02-20
使用hibernate的查詢快取
執行以下程式碼:
String jpql = "FROM User u WHERE u.id = ?";
Query query = entityManager.createQuery(jpql);
query.setParameter(1, 1);
User user = (User) query.getSingleResult();
query = entityManager.createQuery(jpql);
query.setParameter(1, 1);
user = (User) query.getSingleResult();
很顯然會執行兩次查詢
如果想要使用快取,只查詢一次,可以使用setHint
String jpql = "FROM User u WHERE u.id = ?";
Query query = entityManager.createQuery(jpql).setHint(QueryHints.HINT_CACHEABLE, true);
query.setParameter(1, 1);
User user = (User) query.getSingleResult();
query = entityManager.createQuery(jpql).setHint(QueryHints.HINT _CACHEABLE, true);
query.setParameter(1, 1);
user = (User) query.getSingleResult();
注意:這裡的QueryHints是org.hibernate.ejb.QueryHints包下的,並且,使用查詢快取的前提是在配置檔案中配置了啟用查詢快取
<property name="hibernate.cache.use_query_cache" value="true"/>