Ehcache Vs静态地图缓存实现

dps*_*dce 7 java caching hibernate ehcache jpa-2.0

我有几个表中包含很少的条目,它们永远不会动态变化.所以我想将整个表缓存在内存中以减少对DB的负载.我可以通过静态Map轻松实现这一点,并在静态块中填充地图.

我想知道Ehcache + hibernate是否可以通过更有效的方式实现相同的目标?

Boz*_*zho 7

Ehcache具有比Map更多的功能:

  • 限制内存中的最大元素数
  • 溢出到磁盘(如果超过上面的数字)
  • 设置元素的生存时间和空闲时间
  • 允许在群集内进行复制

如果您不需要其中任何一个,您可以安全地使用Map - 它将更容易配置.


JB *_*zet 6

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

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

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