假设我有一张Master Data
播种1次的桌子,很少会更新。它有一个扁平的结构实体,没有Lazy attributes
。
Address{
id,
country,
state,
city,
pincode,
area
}
案例-1:表有1000条记录
案例2:表格有100万条记录
使用案例 - 需要通过ID获取完整Address object
。此表中的事务没有更新,仅用于显示目的,LOV,引用ID等。
考虑性能,内存使用情况,GC,搜索速度等,最好使用Hibernate缓存(id,object)或仅使用static HashMap (is as key, Address object as value)
。
我知道Hibernate 2nd level cache
(ehcache
,Infinispan
等)也使用深层库内的Map结构。所以在上面的情况下添加任何有用的东西,添加额外的Hibernate层。
答案 0 :(得分:1)
Ehcache,Hazelcast(二级缓存)等功能比静态Hashmap更多。
1.限制内存中元素的最大数量
2.overflow to disk(如果超过上述数量)
3.设置元素的生存时间和空闲时间
4.允许在群集中复制
如果你想要这些功能,那么你应该去做。否则静态hashmap可以完成你的工作。如果您的记录得到更新,请在一段时间后刷新。
还有一件事,在这两种情况下,数据都会存储在内存中,或者你可以在堆上说。但是,如果您想存储数据 OFF堆,请阅读 MapDB 。
我已经将hazelcast作为二级缓存提供者。它还提供了分布式缓存,并且在群集环境中运行良好。
检查这些链接 Disk based HashMap Ehcache Vs Static map cache implementation