1. 程式人生 > >JPA學習筆記(13)——查詢快取

JPA學習筆記(13)——查詢快取

使用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();

注意:這裡的QueryHintsorg.hibernate.ejb.QueryHints包下的,並且,使用查詢快取的前提是在配置檔案中配置了啟用查詢快取

<property name="hibernate.cache.use_query_cache" value="true"/>