Java 如何在不同的应用程序初始化中访问DB查询结果缓存?

Java 如何在不同的应用程序初始化中访问DB查询结果缓存?,java,spring,hibernate,spring-boot,jpa,Java,Spring,Hibernate,Spring Boot,Jpa,我正在用Spring Boot开发一个命令行应用程序,它对一些繁重的DB查询进行一些处理 问题:由于表之间的关系量,所有查询都非常耗时(大约1小时) 我现在的位置:我已经找到了缓存查询结果的方法,例如通过@Cacheable。尽管如此,这种缓存使得它不能在不同的应用程序启动之间重用。每当由于某些代码更改而关闭应用程序时,我就会丢失该缓存,并且必须重新执行查询 我要寻找的是:一种缓存解决方案,它可以使来自繁重查询的结果在不同的应用程序运行中重复使用(可能将缓存保存到文件或其他东西中)。我知道我可以

我正在用Spring Boot开发一个命令行应用程序,它对一些繁重的DB查询进行一些处理

问题:由于表之间的关系量,所有查询都非常耗时(大约1小时)

我现在的位置:我已经找到了缓存查询结果的方法,例如通过
@Cacheable
。尽管如此,这种缓存使得它不能在不同的应用程序启动之间重用。每当由于某些代码更改而关闭应用程序时,我就会丢失该缓存,并且必须重新执行查询


我要寻找的是:一种缓存解决方案,它可以使来自繁重查询的结果在不同的应用程序运行中重复使用(可能将缓存保存到文件或其他东西中)。我知道我可以自己对文件缓存执行此操作,但我宁愿使用更标准的方式。有什么建议吗?

您是否考虑将Ehcache作为Spring缓存抽象的支持实现? 可以将其配置为将缓存内容存储到磁盘,在这种情况下,缓存将在JVM重新启动后继续运行。
参考文献:


所有查询都非常耗时-请确保您有适当的索引。查询的缓慢性来自一些因素:我所在公司的测试数据库没有太多的处理资源,并且我的起点和目标表之间的差距约为7个联接。按索引执行所有查询。我将对此进行研究。非常感谢。Ivan,我刚刚为spring boot测试了一个EhCache java配置,它可以工作(除了要求“企业”库版本工作的持久性配置之外)。什么持久性配置需要企业库版本?我成功地运行了一个带有缓存到磁盘的小示例,而没有被要求提供企业版。在ehcache GitHub repo中也可以看到这个示例:我在示例项目中尝试了类似的配置,但在xml模式定义上出现了错误。也许我用的是旧版本的EhCache。当我试图通过java配置配置持久性时,企业版问我“LOCALRESTARTABLE”。