Hibernate缓存本机SQL查询

时间:2012-02-21 19:15:35

标签: 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">
            <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对这些类型的查询的支持的明确答案。我猜测二级缓存可能在这里不起作用,因为Hibernate不知道上面的大多数表。 对于此本机查询的缓存,我们有哪些最佳选择?

由于

1 个答案:

答案 0 :(得分:3)

每个本机查询都会使缓存无效,所有区域都会无效。