【问题标题】:Load data from Database once and available all the time using spring and show in JSP使用spring从数据库一次加载数据并始终可用并在JSP中显示
【发布时间】:2021-03-19 21:26:57
【问题描述】:

我想立即从数据库加载下拉数据并设置在 java 对象中并绑定到我的视图(JSP 页面),并且使用 spring mvc 和 jsp 页面始终可用于该特定控制器或功能。 我不想在应用程序启动时加载,因为我们的应用程序很大,而且每个功能都是独立的。 如果我在应用程序启动时加载,启动应用程序需要很长时间 有没有办法使用spring mvc模式和使用JSP 有人能告诉我怎么做吗

【问题讨论】:

    标签: spring spring-mvc jsp


    【解决方案1】:

    正如您没有提到您执行数据库操作的频率或获取数据的频率。考虑到普通用户。

    方法:创建自己的本地缓存/程序缓存实现。

    • 不要在启动期间从数据库中加载所有数据,而是仅加载对所有人通用的主数据。如果主数据也很高,那么您可以执行延迟加载方法。
    • 首次请求时加载特定功能的数据。将数据保存在本地缓存中。
    • 每当有人进行更改时,将数据添加到缓存中并将其保存到数据库中。因此,您将始终在缓存中保存最新数据。

    优势:

    • 对于通用或静态主数据非常有用 -如果您需要一些通用数据的良好业务逻辑。这种方式只有在您处理数据并保留缓存时才使用。 - 获取数据非常快,因为它除了第一次之外不涉及数据库请求

    缺点:

    • 如果您有非常多的用户和非常高的更新操作,那么更新缓存将延迟更新过程,因为您需要按顺序更新它。

    我建议您可以使用多种方法来提高代码质量和处理能力。

    【讨论】:

      【解决方案2】:

      这听起来像是典型的缓存功能。

      Spring 在应用程序级别支持caching out of the box by @EnableCaching 和在存储库方法上支持@Cacheable(“cachename”) 检索您的下拉数据。在您的简单用例中,您甚至不需要额外的框架,因为有一个基于 ConcurrentHashMapCacheManager 可以永久缓存。

      使用缓存,您的控制器可以简单地从存储库中获取下拉数据。缓存将确保只有第一个调用会真正从数据库中获取,并将结果保存在内存中以供所有即将到来的调用使用。

      如果您需要更复杂的缓存,您只需更换缓存管理器并根据需要配置缓存。

      【讨论】:

        猜你喜欢
        • 2015-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-03
        • 1970-01-01
        • 2019-02-04
        相关资源
        最近更新 更多