gpt4 book ai didi

java - Hibernate 缓存与 Map - 存储目的

转载 作者:行者123 更新时间:2023-11-30 10:56:26 25 4
gpt4 key购买 nike

假设我有一个表,其中 Master Data 播种了 1 次,而且很少更新。它有一个平面结构实体,没有任何惰性属性

Address{
id,
country,
state,
city,
pincode,
area
}

Case -1 : Table has 1000 records

Case-2 : Table has 1 million records

用例 - 需要通过 id 获取完整的 Address 对象。此表中的事务没有更新,仅用于显示目的、LOV、引用 Id 等。

  1. 考虑性能、内存使用、GC、搜索速度等,为此使用 Hibernate 缓存(id,对象)或仅使用 static HashMap(作为键,Address 对象作为值)哪个更好.

  2. 我知道 Hibernate 二级缓存(ehcacheInfinispan 等)也在库深处使用 Map 结构。它是否在上述情况下添加了任何有用的东西,以添加额外的 Hibernate 层。

最佳答案

Ehcache、Hazelcast(用于二级缓存)等比静态 Hashmap 具有更多的特性。

1.限制内存中元素的最大个数

2.溢出到磁盘(如果超过了上面的数量)

3.为元素设置生存时间和空闲时间

4.允许在集群内复制

如果您想要这些功能,那么您应该这样做。否则静态 HashMap 可以完成您的工作。如果您的记录更新,请在一段时间后刷新。

还有一件事,在这两种情况下,数据都将存储在内存中,或者您可以说是在堆上。但是,如果您想将数据存储在 OFF Heap 中,请阅读有关 MapDB 的内容。

我曾将 hazelcast 用作二级缓存提供程序。它也提供分布式缓存,并且在集群环境中运行良好。

检查这些链接 Disk based HashMap Ehcache Vs Static map cache implementation

关于java - Hibernate 缓存与 Map - 存储目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33012990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com