【问题标题】:Hibernate caching of native SQL queries本地 SQL 查询的休眠缓存
【发布时间】:2012-02-21 19:15:34
【问题描述】:

以下是我的 Hibernate 映射文件的 sn-p。我们正在使用映射到我们返回的 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 所知。 对于本机查询的缓存,我们有什么最佳选择?

谢谢

【问题讨论】:

    标签: hibernate


    【解决方案1】:

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

    【讨论】:

    • 我认为是因为很难窥探改变原生查询的因素。例如,您可以调用存储过程来更改所有数据。无法从 jvm 跟踪它。缓存很容易使缓存失效很难。
    猜你喜欢
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 2015-10-23
    • 2013-03-18
    • 2011-12-30
    相关资源
    最近更新 更多