Java HTTPSession - 将用户电子邮件存储为字符串与存储用户对象

时间:2012-07-21 10:51:33

标签: java jsp object jstl httpsession

我有一个HTTPSession对象,我想在其中存储用户信息。

我有两个选择

  • 将用户电子邮件存储为字符串,并将用户从数据库中取出并每次都使用这些字段。
  • 将User对象存储在会话中并获得JSTL支持,例如我可以执行$ {User.firstName}

哪一个是更好的解决方案?最佳做法?

3 个答案:

答案 0 :(得分:2)

我认为作为对象存储将是更好的...

答案 1 :(得分:1)

这完全取决于您是否希望在会话的生命周期内更改用户信息。

如果它没有改变,或者您不关心显示过时值,那么将用户存储在会话中就可以了。另外,每次从数据库获取最新的用户信息都是必要的。

我会避免通过他的电子邮件地址识别用户,因为它可能会过期和更改。使用技术用户ID,并将其电子邮件存储为用户的任何其他信息。

答案 2 :(得分:0)

我会小心在会话中存储大对象,因为它可能成为性能瓶颈。完整对象可能是更舒适的解决方案但是如果您存储的对象很大,则可能会遇到内存和性能问题,因为对象是序列化和反序列化的。这也意味着您只能在会话中存储可序列化的对象(意味着它们需要实现Serializable接口)。

我总是尝试在会话中尽可能少地存储。在您的情况下,只需存储标识符并稍后查找用户对象,例如使用一些实用方法。