【发布时间】:2022-10-18 01:26:44
【问题描述】:
在工作中,我们使用 Java EE (WildFly) 的工作量不断增加。持久层使用带有 JPA 和 Hibernate 的 EJB。一个表(主数据表)获得了 99% 的流量和数据库大小,而还有许多其他表用于描述数据。
它可以工作,但有时会变慢,因为在保存数据表实体时必须加载许多描述实体。我们似乎无法启动二级 Hibernate 缓存,因此我们目前正在研究内存缓存。
基本思想只是我上面提到的每个描述实体的简单 HashMap。我们谈论的是总共 50k 条记录的 10 个表,因此它不会对数据库产生严重影响。
启动时全部加载,放入HashMap中,与其他缓存实体链接(有些描述实体之间有关系)。当其中一个实体被更新时,在缓存中将其替换为更新的版本。当它们驻留在缓存中时,它们会被逐出并且应该像普通 POJO 一样运行。
我们还研究了一些真正的缓存解决方案,如 JCache、Caffeine 等,但不确定我们是否真的需要它们提供的功能。
这有什么意义吗?或者这是解决问题的愚蠢方法?
【问题讨论】:
标签: java hibernate jpa caching guava