【发布时间】:2016-01-05 21:50:57
【问题描述】:
假设我有一张表,其中 Master Data 播种了 1 次,并且很少更新。它有一个扁平的结构实体,不像Lazy attributes。
Address{
id,
country,
state,
city,
pincode,
area
}
案例-1:表有1000条记录
案例 2:表有 100 万条记录
用例 - 需要通过 id 获取完整的 Address object。此表中的事务没有更新,仅用于显示目的,LOV's,reference Id 等。
考虑性能、内存使用、GC、搜索速度等,哪个更好使用 Hibernate 缓存(id, object) 或仅使用
static HashMap (is as key, Address object as value)。我知道
Hibernate 2nd level cache(ehcache,Infinispan等)也在库的深处使用 Map 结构。那么它是否在上述情况下添加了任何有用的东西,以添加额外的 Hibernate 层。
【问题讨论】:
-
你是指第一级的hibernate缓存吗?
-
@kucing_terbang 不,它纯粹是 2 级缓存与主题中的 hashmap,没有 Ist 级别
-
那么我会选择使用休眠缓存(ehcache 等)。除非你为 JVM 保留了巨大的内存。
-
@ kucing_terbang 是的,所以我想知道 Hibernate 是如何管理对象的,而不是存储在内存中..??,在这种情况下它如何存储 id 和 object 以及在哪里,它纯粹是在磁盘上。
-
是的,hibernate 会将它存储到内存中,直到事务结束(它将数据写入数据库/磁盘并清理缓存/内存)。您的情况应该与最后的处理相同,
Address只是休眠的另一个实体。
标签: java hibernate dictionary ehcache second-level-cache