如何缓存已执行的本机SQL的结果,查询的结果可以是数字或简单的字符串,因此我没有匹配的实体。
答案 0 :(得分:0)
在你的查询中你应该使用query.setHint(“org.hibernate.cacheable”,“true”);例如:
javax.persistence.Query query = entityManager.createQuery("...");
query.setHint("org.hibernate.cacheable", "true");
也有ehcache.xml,例如
<ehcache>
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="100"
maxElementsOnDisk="500"
external="false"
overflowToDisk="true"
memoryStoreEvictionPolicy="LRU"
/>
.....
</ehcache>
当然还有persistence.xml,例如
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>...</class>
<properties>
<property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.SingletonEhCacheProvider"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.provider_configuration_file_resource_path" value="/ehcache.xml"/>
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
.....
</properties>
</persistence-unit>
</persistence>
答案 1 :(得分:0)
我使用Heimdall数据。它充当透明的sql缓存。该产品提供缓存建议,为开发人员留下猜测。