我看到很多文章说在Hibernate中使用二级缓存会提高性能,但对使用它的缺点却没有太大帮助。我不想将二级缓存视为一种神奇的“在这里启用免费更好的性能!”按钮。任何人都可以描述使用二级缓存的缺点,以便我能够意识到使用它的含义吗?
答案 0 :(得分:5)
其他答案中引用的分数似乎有效。然而,对我来说,主要的缺点是别的:
性能下降。是的,没有必要进行缓存以提供更好的性能。 Hibernate需要做额外的工作来存储和更新缓存。如果经常更改缓存的实体并且您不经常查询它们,则启用缓存只会增加不必要的额外负担。
缓存失效。如果您的应用程序具有通过不更新实体的方式执行更新的逻辑(例如,直接SQL更新,通过其他应用程序更新,批量HQL更新(我对最后一种情况不太确定:P)),Hibernate将不知道实体已更改。因此,当您进行查询时,您仍会在更新前获取图像。
答案 1 :(得分:3)
缺点: