【问题标题】:Do native queries in JPA 2.0 bypass the first level cache?JPA 2.0 中的本机查询会绕过一级缓存吗?
【发布时间】:2012-03-21 13:09:36
【问题描述】:

我是 OpenJPA 的新手,我想知道调用本机查询是否会绕过一级缓存并直接进入数据库。

【问题讨论】:

    标签: jpa openjpa nativequery


    【解决方案1】:

    原生查询可以针对数据存储中的任何表...无论是否基于实体。 L1 缓存通常与此过程无关,除非您的查询结果类是实体。

    【讨论】:

    • 因此,如果我在结果是实体的情况下执行本机查询,您是说就 L1 缓存而言,它的工作方式与我使用 JPQL 执行类似查询或标准生成器?
    • (兼容的)JPA 实现的 EntityManager 应该只返回一个特定 id 的实体(即在任何时候只有一个由该 EM 管理),所以如果查询返回一个具有某个 id 的实体,并且该 id 已经被缓存,那么它应该返回缓存的对象。
    • 好的 - 这是有道理的。因此,在返回是实体的简单选择的情况下,我使用 Native SQL、JPQL 还是 CriteriaBuilder 都无关紧要。在这种情况下,不使用原生 SQL 有什么好处?
    • 我建议你看看this
    猜你喜欢
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2014-05-28
    • 2013-10-03
    • 2014-08-12
    • 2013-10-31
    • 2013-11-01
    • 2014-06-25
    相关资源
    最近更新 更多