本机SQL查询的Hibernate缓存
下面是我的Hibernate映射文件的一个片段。我们正在使用映射到返回的MyCode对象的本机SQL查询。在Hibernate中实际上只映射了查询中指定的少数表本机SQL查询的Hibernate缓存,hibernate,Hibernate,下面是我的Hibernate映射文件的一个片段。我们正在使用映射到返回的MyCode对象的本机SQL查询。在Hibernate中实际上只映射了查询中指定的少数表 <hibernate-mapping package="a.b.c.d"> <class name="MyCode" table="OVERRIDE" schema="SCHEMA1"> <id name="myId" type="java.lang.Long">
<hibernate-mapping package="a.b.c.d">
<class name="MyCode" table="OVERRIDE" schema="SCHEMA1">
<id name="myId" type="java.lang.Long">
<column name=ID" length="22"/>
<generator class="assigned"/>
</id>
<property name="myCode" type="java.lang.String">
<column name=CD"/>
</property>
<property name="myDescription" type="java.lang.String">
<column name="DESC" length="120"/>
</property>
</class>
<sql-query name="retrieveCodes">
<return class="MyCode"/>
<![CDATA[
select distinct o.ID, ec.CD, o.DESC
from SCHEMA1.AEFX aefx, SCHEMA1.EC ec, SCHEMA1.FC fc, SCHEMA1.MYCODE o
....
....
我们想知道为这个查询添加缓存的好处。相关数据很少更新,但会被大量阅读
关于Hibernate对这些查询类型的支持,我还没有在Hibernate文档中得到明确的答案。我猜二级缓存在这里可能不起作用,因为上面的大多数表都不知道休眠。
关于本机查询的缓存,我们最好的选择是什么
谢谢每一个本机查询都会使缓存、所有区域失效。我想是因为很难发现是什么改变了本机查询。例如,您可以调用更改所有数据的存储过程。无法从jvm跟踪它。缓存很容易失效缓存很难。