什么是正确的原因,以获得EclipseLink JPA query.getResultList()导致缓存?

时间:2013-08-12 17:51:51

标签: jpa eclipselink

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

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

我在想查询然后为每个结果调用EntityManager find - 但似乎错了。显然我不能先调用find,因为我不知道对象id。

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

由于

1 个答案:

答案 0 :(得分:0)

默认情况下,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