Java 在何处保存用户';谁的身份证?

Java 在何处保存用户';谁的身份证?,java,web,profile,Java,Web,Profile,我正在设计一个web应用程序,它应该保留用户的个人资料,其中包含大量信息, 显然,它从数据库中读取数据 目前,我的会话中有用户名,每次需要用户信息时,都应该读取会话,然后创建profile类的对象(再次从数据库读取数据)来检索用户信息,这是解决此类问题的最佳做法吗?通常,“最佳做法”是在会话中维护用户配置文件数据,并仅在第一次从数据库加载所有需要的信息 换句话说,在http会话中保留Profile类的实例(必须实现Serializable)。配置文件必须包含更频繁使用的所有信息 请注意,“读取会

我正在设计一个web应用程序,它应该保留用户的个人资料,其中包含大量信息, 显然,它从数据库中读取数据


目前,我的会话中有用户名,每次需要用户信息时,都应该读取会话,然后创建profile类的对象(再次从数据库读取数据)来检索用户信息,这是解决此类问题的最佳做法吗?

通常,“最佳做法”是在会话中维护用户配置文件数据,并仅在第一次从数据库加载所有需要的信息

换句话说,在http会话中保留
Profile
类的实例(必须实现
Serializable
)。配置文件必须包含更频繁使用的所有信息

请注意,“读取会话”就像读取HashMap(因此在性能方面成本最低)。 当
HttpSession
过期时,配置文件将被垃圾收集

更新(基于您的评论):


要统计(或查找)活动用户(非活动用户是所有其他用户),典型的解决方案是使
Profile
实现
httpsessionbindingstener
接口。当
Profile
绑定到会话时,会收到通知,因此您可以增加一个静态计数器(例如Profile类的静态属性),并且可以在
Profile
解除绑定(以编程方式解除绑定或由于其会话已过期)时减少它

通常,“最佳实践”是在会话中维护用户配置文件数据,并仅在第一次从数据库加载所有需要的信息

换句话说,在http会话中保留
Profile
类的实例(必须实现
Serializable
)。配置文件必须包含更频繁使用的所有信息

请注意,“读取会话”就像读取HashMap(因此在性能方面成本最低)。 当
HttpSession
过期时,配置文件将被垃圾收集

更新(基于您的评论):


要统计(或查找)活动用户(非活动用户是所有其他用户),典型的解决方案是使
Profile
实现
httpsessionbindingstener
接口。当
Profile
绑定到会话时,会收到通知,因此您可以增加一个静态计数器(例如Profile类的静态属性),并且可以在
Profile
解除绑定(以编程方式解除绑定或由于其会话已过期)时减少它这是性能和内存消耗之间的典型权衡。如果您想要一个快速的应用程序,请将整个用户配置文件保存在HTTP会话中,但要确保服务器中有足够的内存

若要保持资源消耗低,请在会话中只存储用户ID,并在每次需要时从数据库中加载它。这也使得集群更简单,因为要迁移的数据更少


合理的折衷办法是使用后一种方法和一些缓存。这样,热用户(当前使用系统)将保留在内存中,而空闲用户或不经常访问新页面的用户将从缓存中清除(假设缓存小于HTTP会话数)。

这是性能和内存消耗之间的典型权衡。如果您想要一个快速的应用程序,请将整个用户配置文件保存在HTTP会话中,但要确保服务器中有足够的内存

若要保持资源消耗低,请在会话中只存储用户ID,并在每次需要时从数据库中加载它。这也使得集群更简单,因为要迁移的数据更少


合理的折衷办法是使用后一种方法和一些缓存。这样,热用户(当前使用系统)将保留在内存中,而空闲用户或不经常访问新页面的用户将从缓存中清除(假设缓存小于HTTP会话数)。

同意Obe6的响应, 最佳实践是确保配置文件不在会话中,然后从数据源检索,然后将其附加到会话

当会话无效时,将从会话中删除所有信息。 IBM有一篇关于这方面的好文章。
同意Obe6的回复, 最佳实践是确保配置文件不在会话中,然后从数据源检索,然后将其附加到会话

当会话无效时,将从会话中删除所有信息。 IBM有一篇关于这方面的好文章。
会话通常是保存用户配置文件数据的好地方。你需要量化你在这里谈论的数据量。假设每个会话有5KB,那么,您可以使用100MB的RAM在内存中存储多达20000个用户配置文件。您可以根据站点上预期的最大活动会话数,相应地将堆分配给JVM

这只是一个方面。当您计划通过添加更多应用程序服务器来扩展应用程序时,您甚至可以考虑将会话移出进程外缓存/内存存储区,如memcached


如果您在会话中保存的所有用户配置文件数据没有在每个页面上呈现,则最好只在会话中保留最少的数据,并根据需要获取其他数据。

会话通常是保存用户配置文件数据的足够好的地方。你需要量化你在这里谈论的数据量。假设每个会话有5KB,那么,您可以使用100MB的RAM在内存中存储多达20000个用户配置文件。您可以根据站点上预期的最大活动会话数,相应地将堆分配给JVM

这只是一个方面。当您计划通过添加更多应用程序服务器来扩展应用程序时,您甚至可以考虑将会话移出进程外缓存/内存存储区,如memcached

如果您在会话中保留的所有用户配置文件数据没有在每个页面上呈现,那么最好只在会话中保持最小值,并在需要时获取其他数据