gpt4 book ai didi

hibernate - Hibernate 二级缓存的解决方案

转载 作者:行者123 更新时间:2023-12-02 00:59:17 25 4
gpt4 key购买 nike

我们在当前开发的项目中使用 Hibernate 和 JPA。目前在 Wildfly 上运行, future 可能会根据需要提供商业版本。

Hibernate documentation here 中列出了二级缓存的一些替代方案。 。还存在其他解决方案,例如 Hazelcast 。在替代方案中,JBoss 似乎正式支持 Infinispan solution .

与许多项目中的情况一样,我们有一些表很少会改变(如果有的话),例如城市列表、项目可以具有的状态等。因此,我们决定在这种情况下使用二级缓存.

  • 您能分享一下您在这种情况下的专业知识吗?这是一个好的用例吗?有没有更好的方法来保存这些数据?您如何处理很少或从不改变的数据?
  • 您过去和/或当前使用哪个提供商作为二级缓存?为什么?您选择的解决方案的优点和缺点是什么?

最佳答案

  1. 二级缓存是关系数据缓存,而不是成熟的对象缓存解决方案。因此,仅保存基本实体属性和外键。对于实体关联,*对一可能会保存在不同的缓存区域,而*对多关系也需要启用查询缓存。

    我认为当您的实体实际上不时发生变化时,二级缓存会更有用。当实体被判定为脏时,二级缓存条目失效。

  2. 但是如果您很少更改数据,那么使用实际的对象缓存可能会更好。对象缓存将存储整个对象关系树,如果您主要对实体进行操作,那么它是一个更好的选择,而不是自由式的连接投影。

    因此,如果您的工作流程围绕具有层次结构的实体,那么对象缓存更合适。

  3. 如果您的应用程序实际上并不使用实体操作,而是使用各种数据连接投影,那么您应该添加数据库索引并确保数据库服务器有足够的 RAM 来提供内存中的数据,而无需访问磁盘。

解决方案:

我建议您使用HazelCast ,这是一个高性能内存数据网格。 HazelCast 允许您将其集成为二级缓存,或者您可以根据需要保存整个对象图。只需按照他们的文档了解如何将其集成到当前的应用程序中即可。

关于hibernate - Hibernate 二级缓存的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26909960/

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