使用Hibernate的二级缓存是减少内存使用还是仅减少数据库访问?

时间:2012-02-09 16:33:41

标签: hibernate ehcache

我主要使用Hibernate来减少应用程序的内存消耗,因为我可以将数据存储在数据库而不是内存中。基本上有一个主要实体Song代表从目录加载的音乐文件,但是我在将数据库添加到数据库后使用hibernate做的第一件事就是将它添加到执行程序的管道中以进行进一步处理,以便实例表示每首歌曲的对象仍在内存中并保持不变,直到歌曲处理完毕,因此我不会节省太多内存。

我的第一个想法是,当我将它们添加到pipleline时只存储歌曲的id,并且只有在需要处理时才获得实际实体,但这似乎是在反对而不是使用Hibernate。

相反,我想知道我是否使用配置了Hibernate的Ehcache来使用磁盘缓存,这意味着我使用的实例不会占用太多内存,或者一旦我实际拥有引用,它们会使用尽可能多的内存他们在我的申请中。

1 个答案:

答案 0 :(得分:1)

如果您有对实体的引用,那么显然该对象在内存中(除非引用是对延迟加载的代理的引用)。

EHCache用于避免过于频繁地访问数据库,并从内存或磁盘缓存中获取实体。使用它会增加内存,而不是减少内存。