Где хранить объект, мне нужен весь сеанс, и мне нужна возможность обновить его, а также обновить его в базе данных? - PullRequest
1 голос
/ 19 июля 2011

Объект - зарегистрированный пользователь с некоторыми объектами, связанными с ним. Я бы хотел, чтобы трафик в базе данных был минимальным. Мне нужно правильное решение, чтобы сделать это. Я использую JSP-код без скриптов, с сервлетами и получаю объект через JPA. Я надеюсь, вы понимаете, о чем я.

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

Если вы сохраняете данные в сеансе, как предложено powerMicha, вы должны убедиться, что данные, которые вы храните, являются сериализуемыми.В противном случае вы можете получить странное поведение, так как некоторые веб-контейнеры сохраняют данные сеанса на диск посредством сериализации, если им нужна память для других целей.

1 голос
/ 19 июля 2011

Вы можете сохранить свой объект в HttpSession с помощью методов setAttribute(...) и получить его через getAttribute(...)

Таким образом, ваш код (в сервлете) будет выглядеть примерно так:

final String CURRENT_USER_KEY = "CURRENT_USER";

EntityManager em; // somewhere initialized
Integer userid; //  somewhere initialized

HttpSession session =  httpServletRequest.getSession();
User user = session.getAttribute(CURRENT_USER_KEY);

if(user == null){
  User user = em.find(User.class, userId);
  session.setAttribute(CURRENT_USER_KEY, user);
}

// perform further actions on your user
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...