Spring 引导 - 避免多次获取相同的 DAO
Spring Boot - Avoid getting the same DAO multiple times
在编写复杂的 Web 应用程序期间,我们意识到我们经常在 API 调用期间获得相同的 DAO。之所以会发生这种情况,是因为应用程序具有多个层。我们希望避免在一个请求期间多次从数据库中获取相同的实体。唯一可以使用的解决方案是线程上下文。我们可以在那里缓存已经从数据库请求的实体,当系统第二次请求相同的实体时,它将从线程上下文而不是数据库返回。这可能有效,但我们都知道这可能不是最佳选择,因为应用程序可以有后台线程,而这种缓存不是一个好的做法。
(如果这很重要,我们使用 MongoDB)
如果您知道此问题的任何其他解决方案,请告诉我:)
您需要从数据访问层进行某种缓存,也许是缓存端模式 - 为此,我已经 using ehcache 了。这为您提供了一个经过实战检验的可配置库,无需使用 ThreadLocal 等。
This thread is a similar problem statement 到您的 post - 看看那里的一些答案。
考虑使用 @Cachable
表示法并使用默认缓存,或者您可以实施 spring 支持的多种缓存解决方案中的任何一种。
https://docs.spring.io/spring/docs/4.1.x/spring-framework-reference/html/cache.html
在编写复杂的 Web 应用程序期间,我们意识到我们经常在 API 调用期间获得相同的 DAO。之所以会发生这种情况,是因为应用程序具有多个层。我们希望避免在一个请求期间多次从数据库中获取相同的实体。唯一可以使用的解决方案是线程上下文。我们可以在那里缓存已经从数据库请求的实体,当系统第二次请求相同的实体时,它将从线程上下文而不是数据库返回。这可能有效,但我们都知道这可能不是最佳选择,因为应用程序可以有后台线程,而这种缓存不是一个好的做法。
(如果这很重要,我们使用 MongoDB)
如果您知道此问题的任何其他解决方案,请告诉我:)
您需要从数据访问层进行某种缓存,也许是缓存端模式 - 为此,我已经 using ehcache 了。这为您提供了一个经过实战检验的可配置库,无需使用 ThreadLocal 等。
This thread is a similar problem statement 到您的 post - 看看那里的一些答案。
考虑使用 @Cachable
表示法并使用默认缓存,或者您可以实施 spring 支持的多种缓存解决方案中的任何一种。
https://docs.spring.io/spring/docs/4.1.x/spring-framework-reference/html/cache.html