默认情况下是否启用Java Hibernate二级缓存?

时间:2018-10-14 16:57:10

标签: java hibernate caching

默认情况下是否启用了休眠二级缓存?

我在org.hibernate.cfg.Configuration中没有为其配置任何内容,所以这意味着它未被使用。

如果我确实想使用它,可能会以提高内存使用为代价来提高性能,或者仅使用磁盘空间。使用数据库的主要原因之一是使我的应用程序可以扩展,并且不需要越来越多的内存。

1 个答案:

答案 0 :(得分:1)

  

默认情况下是否启用了休眠二级缓存?

不是。第二级缓存是一个单独的缓存库,您需要将其添加为依赖项并对其进行配置,例如EHCache,hazelcast,cache2k,...

  

如果我确实想使用它,可能会以提高内存使用为代价来提高性能,或者只是使用磁盘空间。

利用更多的内存来减少外部请求是缓存的本质。根据您的应用,这可能会有不同的效果。如果您的应用程序对某些行的请求不比其他行更频繁,并且您有很多数据,则缓存可能会适得其反。但是,这种情况很少见。

您可以限制缓存使用的内存量,因此,一旦已满,使用的内存将相当恒定。

  

使用数据库的主要原因之一是我的应用程序可以扩展并且不需要越来越多的内存。

“比例”表示不同的含义。这可能意味着您的应用程序需要处理越来越多的数据,或者可能意味着您的应用程序需要处理越来越多的用户。或两者。缓存可以帮助您处理更多的用户并以较低的延迟处理请求,从而改善用户体验。

对于较小的缓存大小,可能会发生内存消耗降低的情况。由于从数据库请求数据的活动较少,因此VM中的GC活动将减少,并且需要较少的数据库连接和其他资源。

我的建议

根据我的经验,即使是很小的缓存(比如说1000个条目)也会产生很大的影响。这是因为99%的应用程序都有一些经常需要的数据热点。在不了解您的应用的情况下,不可能在理论上回答您的问题。最好的方法是尝试一下。