当前位置: 首页 > 面试题库 >

Ehcache与静态地图缓存实现

百里疏珂
2023-03-14
问题内容

我的表很少,条目也很少,它们永远不会动态更改。所以我想将整个表缓存在内存中以减少DB的负载。我可以通过一个静态Map并将该地图填充到一个静态块中轻松实现这一目标。

我想知道Ehcache +hibernate是否可以更有效地实现相同的效果?


问题答案:

真正的二级缓存相对于静态映射的优点是,您仍可以通过使用Hibernate会话(或实体管理器)来保持定义,访问和遍历实体的相同方法,从而获得内存访问的优势。

您可以保持与其他实体的关系(甚至不缓存);您可以使用查询缓存,并且仍然对这些实体执行查询(这些查询的结果也将被缓存)。

简而言之,它是透明的,正如Bozho所说,它提供了更多选择,并且易于使用,因为缓存实体的使用方式与其他实体相同。



 类似资料:
  • [命名空间: Serenity] - [程序集: Serenity.Core] 一个包含快捷访问注册 ILocalCache 提供者的静态类。 public static class LocalCache { public static void Add(string key, object value, TimeSpan expiration); public static TI

  • Glassfish 3.1.2,Mojarra 2.1.6,SSL已激活 也是一篇关于资源缓存的好文章。在我们的应用服务器中,SSL被激活。我们看到静态资源(图像、脚本、css)没有缓存。 下面是我的测试筛选器: 过期:确定。它是一个静态资源,不会改变,因此我们将到期日期设置在未来的一个月。 上次修改:不确定。我读到,将此设置为过去也会影响缓存 缓存控制:OK。允许安全缓存。安全影响? 此设置是否

  • 我有一个spring/hibernate项目,我试图通过ehcache和terracotta将二级缓存添加到hibernate。一切似乎都很好,我甚至可以在terracota控制台中看到我试图缓存的实体的条目。但根据数据库的统计数据和日志,根本没有缓存任何内容! 负载命中率是0%,负载统计也是0。我做错了什么? 这是我所做的,我通过maven添加了所需的罐子。 更改了我的Hibernate属性以启

  • 主要问题是EHCAHCE2.6.2是否基于ehcache配置驱逐过期元素;还是我必须按程序驱逐? 在阅读了文档的各个部分(数据寿命和缓存大小)之后,我们将当前配置设置为使用TTI/TTL和CacheManager级别MaxBytesLocalHeap=1024M。在设置了这个之后,我希望ehcache只能使用1GB的堆空间进行缓存,但是从测试(和prodcution)中,我们总是看到JVM堆已经满

  • [命名空间: Serenity, 程序集: Serenity.Core] DistributedCache 类提供访问当前注册的 IDistributedCache 实现的快捷方法。所以,下面两行代码有相同的功能: IoC.Resolve<IDistributedCache>().Increment("LastID"); DistributedCache.Increment("La

  • Serenity 提供一些缓存抽象和实用功能让你更容易地使用本地缓存。 术语 本地(local) 的意思是指在本地内存中缓存项目(因此没有涉及到序列化)。 当你的应用程序在网站群(web farm) 中部署时,本地缓存可能还不够或者有时合适。我们将在 分布式缓存 章节中讨论该场景。