在会话中存储大量数据 - 我应该这样做吗?

时间:2015-08-10 17:47:12

标签: java spring spring-mvc session

高级问题 - 我正在开发一个Spring MVC / Spring数据项目,通过Spring Repositories搜索数据库中的表。我正在搜索的表格将包含数千条,即使不是数万条记录。我希望在使用该应用程序的整个过程中在List内保留这些记录,直到满足List将被重置或删除的条件。

我的问题是,将此List存储在HttpSession中是否可行?

  • 我是否应该预期此方法会出现任何性能问题?
  • 如果在会话中存储我的List,是否存在安全问题?
  • 是否有任何人可以为此类任务提供最佳实践?

快速查看用户会话信息以及4个对象的小列表(可能是数千个)

Session Attribute Name  Session Attribute Value
searchResults           [com.mysite.dto.User@322bfb87,
                         com.mysite.dto.User@658e75cc, 
                         com.mysite.dto.User@6bd7d82a, 
                         com.mysite.dto.User@27b0e4b6]
userRoles               [ROLE_ADMIN]
username                admin

提前致谢

1 个答案:

答案 0 :(得分:2)

我会将它们存储在缓存中但不会存储在会话中。您可以使用BigMemory Terracotta(http://terracotta.org/products/bigmemory)或memcache等外部缓存(如果您在EC2中运行应用程序,则Amazon提供易于使用的缓存)。这将比您的服务器JVM堆更具扩展性。

另一个想法是在缓存中存储用户对象的引用与用户对象,现在在会话中,您只能存储ID。这样,您的会话只保存数字而不是整个对象