【问题标题】:how to set limitation in EntityManager (JPA) L1 or L2 cache size如何在 EntityManager (JPA) L1 或 L2 缓存大小中设置限制
【发布时间】:2011-04-29 16:29:45
【问题描述】:

如何设置 L1 或 L2 缓存大小限制。我担心增加缓存大小。 一种方法是为缓存定义超时,但我想知道是否可以限制缓存大小?

RGDS 纳维德

【问题讨论】:

    标签: orm jpa caching second-level-cache entitymanager


    【解决方案1】:

    如何设置 L1 缓存大小限制

    你不能。如果您想“控制”(实际上,clear 非常激进,它会删除所有实体)其大小,唯一的选择是定期手动clear 持久化上下文。

    如何设置二级缓存大小限制

    这取决于底层缓存提供程序。换句话说,这是通过配置 L2 缓存实现来完成的。例如,EHCache 有一个maxElementInMemory 参数。


    L1 会发生什么?!随着时间的流逝,内存中会有多少实体?没有任何约束?!

    尽可能多地输入,直到最终OutOfMemoryError,因此需要明确clear

    • 大批量作业(即使它们发生在单个事务中)
    • 如果使用长寿命的EntityManager

    但通常的模式是使用短暂的EntityManager,并且大多数用例不是批处理作业,所以这不是问题。

    另见

    【讨论】:

    • L1 发生了什么?!随着时间的流逝,内存中会有多少实体?没有任何约束?!
    • 你的意思是我不负责清除 L1 或 L2 缓存。不是吗?并且缓存会被自动删除?
    • 我的意思是 L1 缓存是每个 EntityManager 的,它通常是一个短暂的对象。因此,除非您正在执行批处理作业,或者除非您使用的是长期存在的 EntityManager,否则您不必担心。
    猜你喜欢
    • 2021-11-27
    • 2013-01-20
    • 1970-01-01
    • 2020-05-19
    • 2015-06-29
    • 2014-07-04
    • 2012-12-26
    • 2017-09-24
    • 2010-11-09
    相关资源
    最近更新 更多