JPA的查询缓存(Query Cache)是一种缓存机制
,用于缓存查询结果,以提高查询性能和减少数据库访问次数。查询缓存可以缓存查询语句及其对应的结果集,当相同的查询再次执行时,直接从缓存中获取结果,而不需要再次访问数据库。
代码如下:
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.Query;
@Repository
@Transactional
public class UserRepository {
@PersistenceContext
private EntityManager entityManager;
public List<User> findUsersByName(String name) {
Query query = entityManager.createQuery("SELECT u FROM User u WHERE u.name = :name");
query.setParameter("name", name);
query.setHint("javax.persistence.cache.storeMode", CacheStoreMode.REFRESH); // 设置查询缓存模式
return query.getResultList();
}
}
在上面的示例中,UserRepository类中的findUsersByName方法执行一个查询,查询名为name的用户列表。通过使用query.setHint方法,我们设置了查询缓存模式为CacheStoreMode.REFRESH,表示在执行查询时,结果会被缓存,下次执行相同查询时可以直接从缓存中获取,查询缓存可以有效地减少数据库访问次数,提高查询性能。