2012-07-19 44 views
1

场景: 我有存储在数据库中的州(美国)的列表。我需要在form.jsp中显示状态列表。我查询数据库并获取referenceData方法中的状态列表,以便在窗体加载时可以使用状态列表。Spring - referenceData最佳实践

问题: 由于referenceData是在每个页面刷新时执行的,是不是每次刷新都要拖动查询数据库? Spring会在内部缓存还是每次都是昂贵的数据库查询?

什么是填充状态的最佳方式下拉式表单加载在Spring中?

+0

你不告诉我们你是如何得到状态的,所以很难回答。如果你没有在任何地方配置任何缓存,它将不会被缓存到任何地方。 – 2012-07-19 20:17:54

回答

1

如果不明确询问,Spring不会缓存任何内容。另一方面,您可以配置持久性提供程序(例如Hibernate query cache)或使用内置的弹簧caching abstraction

查询每个页面上的数据库刷新是矫枉过正的吗?在你的情况下:固定列表很少发生变化,并且只有很少的项目 - 我甚至会说加载一次并在应用程序的整个生命周期中保留它。如果需要修改,请设置后门。或者使用非常长的到期日期的缓存。

另一方面,缓存通常很痛苦,特别是当缓存验证发挥作用时。但在你的情况下,有什么可以错误的? 着名的遗言

+0

这是美国的州名单。不要以为这会在不久的将来改变页面之间的更新!该列表存储在数据库中。整齐的一个地方供所有应用程序访问。所以,我需要查询数据库的列表并填充ModelMap ...但只是不想查询每个刷新。任何想法在这种情况下最好的做法是什么? – rprab 2012-07-19 20:59:36

+0

@rprab:再看看我的帖子。我实际上建议使用一些缓存或简单地在启动时加载列表并将其保存在内存中。该清单很小且不变,足以使这种方法切实可行。 – 2012-07-19 21:24:49