【问题标题】:Hibernate second level cache for multi page form多页表单的休眠二级缓存
【发布时间】:2016-03-31 23:24:01
【问题描述】:

我有一个多页表单,最终用户必须导航到多个屏幕,其中每个页面数据都必须保存在数据库中。我正在寻找缓存查询和结果,以便在用户尝试在屏幕中来回导航时重复使用它们。 我正在尝试为此启用休眠二级缓存并缓存结果和查询。 这是一个好习惯吗。 如果不推荐,想要远离这种方法。 有什么建议吗?

【问题讨论】:

  • 它看起来像某种向导类型的应用程序,您可以在其中通过多个表单捕获详细信息,并且用户可以在输入数据时来回导航。一旦用户完成向导流程并完成输入数据,他返回同一向导流程以更新数据的机会有多大。对我来说,这看起来像是一次性活动,一旦用户完成,他就不会太频繁地更新该数据(我的意思不是每 10-15 分钟左右)。这些假设是否合理?

标签: hibernate second-level-cache multiscreen


【解决方案1】:

我对应用程序所做的一些假设:

  1. 这看起来像一个向导类型的 gui web 应用程序,用户可以在其中通过多个表单获取详细信息,并且用户可以在输入数据时来回导航。
  2. 此数据特定于用户。

鉴于此,我更愿意将此数据存储在 HttpSessionConversation 范围内(例如 session scoped action forms or @ConverstaionScoped 取决于框架 JSF/Struts) etc rather thanhibernate 二级缓存`。

原因,

  1. 这是用户特定的数据。将应用程序经常访问的数据(热数据)作为一个整体(不是特定于用户)保留在二级缓存中,可以避免数据库往返和更好的性能。
  2. 由于它是用户特定的数据,HttpSession 是存储此数据的更好位置,因为每个用户都与自己的 HttpSession 对象相关联。

【讨论】:

  • 我什至会指出@ConversationScoped - 向导是这个范围的确切用例。
  • @Flavius 我同意这一点,值得一提。
猜你喜欢
  • 2010-10-20
  • 2017-07-05
  • 2011-07-08
  • 1970-01-01
  • 2010-10-29
  • 2019-04-02
  • 2023-03-03
  • 1970-01-01
相关资源
最近更新 更多