【问题标题】:What is the correct why to get EclipseLink JPA query.getResultList() results in the cache?为什么要在缓存中获取 EclipseLink JPA query.getResultList() 结果的正确原因是什么?
【发布时间】:2013-08-12 17:51:51
【问题描述】:

当我使用 EclipseLink JPA query.getResultList() 时,它不会将结果存储在缓存中,因此当我调用 merge 时,第一个调用会执行全选然后更新每个对象。

在缓存中获取查询结果的正确方法是什么?

我正在考虑进行查询,然后为每个结果调用 EntityManager 查找 - 但似乎是错误的。显然我不能先调用 find 因为我不知道对象 ID。

基本上我想将所有数据缓存在内存中(在缓存中)并尽快更新。

谢谢

【问题讨论】:

    标签: jpa eclipselink


    【解决方案1】:

    EclipseLink 默认将 getResultList() 返回的每个对象缓存在共享 (L2) 缓存中。

    如果您没有获得缓存,则说明您配置错误。

    请包括您的代码、配置和 SQL 日志。

    你在使用 Spring 吗? (见http://www.eclipse.org/forums/index.php/t/200321/

    确保您没有禁用共享缓存或配置刷新。

    你正在阅读多少个对象,从查询到合并需要多长时间?如果您正在读取大量对象,您可能需要增加缓存大小(默认为 100),或者更改缓存类型。

    见,http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Caching

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2017-07-03
      • 2011-07-01
      相关资源
      最近更新 更多