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

Java 在会话中存储大量数据-我应该这样做吗?,java,spring,spring-mvc,session,Java,Spring,Spring Mvc,Session,这里有一个高级问题——我正在开发一个SpringMVC/Spring数据项目,通过Spring存储库搜索数据库中的表。我正在搜索的表将包含数千条记录,如果不是数万条的话。在使用应用程序的整个过程中,我希望保留列表中的这些记录,直到满足重置或删除列表的条件 我的问题是,在我的HttpSession中存储此列表是否可行 这种方法是否会出现性能问题 如果在会话中存储我的列表,是否存在安全问题 对于这样的任务,有没有任何人可以提供的最佳实践 用户会话信息的快速查看以及4个对象的小列表(可能有数千个)

这里有一个高级问题——我正在开发一个SpringMVC/Spring数据项目,通过Spring存储库搜索数据库中的表。我正在搜索的表将包含数千条记录,如果不是数万条的话。在使用应用程序的整个过程中,我希望保留
列表中的这些记录,直到满足重置或删除
列表的条件

我的问题是,在我的
HttpSession
中存储此
列表是否可行

  • 这种方法是否会出现性能问题
  • 如果在会话中存储我的
    列表
    ,是否存在安全问题
  • 对于这样的任务,有没有任何人可以提供的最佳实践
用户会话信息的快速查看以及4个对象的小列表(可能有数千个)


提前感谢

我会将它们存储在缓存中,但不会存储在会话中。您可以使用诸如BigMemory Terracotta()或memcache之类的外部缓存(如果您在EC2中运行应用程序,Amazon提供了一个易于使用的缓存)。这将比您的服务器JVM堆更具可扩展性

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

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