orm - 如何在 EntityManager (JPA) L1 或 L2 缓存大小中设置限制

标签 orm jpa caching second-level-cache entitymanager

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

RGDS 纳维德

最佳答案

How to set L1 cache size-limitation

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

How to set L2 cache size-limitation

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


what happens in L1?! how much entities will be in the memory as time pass? w/o any constrains ?!

你投入多少,直到最终 OutOfMemoryError ,因此需要明确地clear:

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

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

另请参阅

关于orm - 如何在 EntityManager (JPA) L1 或 L2 缓存大小中设置限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4005917/

相关文章:

vb.net - 增强 'Rock, Paper, Scissors' 以在 VB.NET 中包含 'Lizard, Spock' 并使代码更具可扩展性、可维护性和可重用性

.net - 现在实现 LINQ to SQL 或 Entity Framework 的注意事项,打算以后使用 NHibernate

java - JPA 的 SQL 结构-行还是列?

java - 检索 SQL 枚举会导致 java.lang.ClassCastException : java. lang.Character 无法转换为 java.lang.String

php - 配置 Varnish 后如何将网页缓存 2 分钟。 (Ubuntu 14.04,Apache,PHP)

caching - 程序的大小如何会增加缓存未命中率?

c# - C# 中的简单 SQLite ORM,代码可以工作,但如何解决竞争条件

orm - 业务对象/数据库访问层的架构

java - @OneToOne 与 JPA 的关系

javascript - 是否可以使用javascript清除浏览器缓存?