Сеансы Spring Server/Client и сеансы Hibernate

Я использую Spring 3 и Hibernate 3.6 для разработки веб-приложения - я новичок, и мне интересно, действительно ли я понимаю, как работают сеансы.

Верно ли, что сеансы между сервером и клиентом, идентифицируемые идентификатором сеанса, отличаются от сеансов гибернации?

Сеанс между сервером и клиентом всегда является HttpSession. (?) Когда он создается? Когда пользователь входит в систему или когда анонимный пользователь запрашивает страницу (которая не защищена)?

есть ли связь между httpssession и hibernate-session? Сессии Hibernate создаются sessionfactory без подключения к httpssession? Я не уверен, к какому сеансу спящего режима относится такая команда:

this.sessionFactory.getCurrentSession().save(object);

это getCurrentSession(): как долго активен этот сеанс гибернации? за все время входа пользователя? или только для одной транзакции (которая может включать в себя несколько операций с данными?)

Прошу прощения за этот вопрос, на который, возможно, очень легко ответить, но большая часть документации написана на английском языке, и, если это не родной язык, понимание иногда затруднено (в основном из-за того, что слово «сессия» используется так часто)

спасибо за помощь в понимании темы! :-)


person nano7    schedule 21.03.2011    source источник


Ответы (1)


Верно ли, что сеансы между сервером и клиентом, идентифицируемые идентификатором сеанса, отличаются от сеансов гибернации?

Да, совсем другое.

Ссылка: (javax.servlet) HttpSession, (спящий режим) Session

Сеанс между сервером и клиентом всегда является HttpSession. (?) Когда он создается? Когда пользователь входит в систему или когда анонимный пользователь запрашивает страницу (которая не защищена)?

См. Учебник по Java EE > Ведение состояния клиента

есть ли связь между httpssession и hibernate-session?

Нет, хотя ссылка OpenSessionInViewFilter может убедиться, что Hibernate Session доступен для каждого HTTP-запроса (один сеанс Hibernate на запрос, а не на веб-сеанс).

Сессии Hibernate создаются sessionfactory без подключения к httpssession?

Да, обычно.

Я не уверен, к какому сеансу hibernate относится такая команда: "this.sessionFactory.getCurrentSession().save(object);"

Спящий режим Session

этот "getCurrentSession()": как долго активен этот сеанс гибернации? за все время входа пользователя? или только для одной транзакции (которая может включать в себя несколько операций с данными?)

См. Справочник по Hibernate > Области сеанса и транзакции

person Sean Patrick Floyd    schedule 21.03.2011
comment
Спасибо за быстрый ответ. прочитав источники, которые вы мне дали, у меня появилось еще несколько вопросов: 1. когда HttpSession является интерфейсом, как объект HttpSession может представлять собой сеанс? Разве не должен быть конкретный класс, реализующий HttpSession? - person nano7; 21.03.2011
comment
2. Я могу быть глупым, но правильно ли я понял, что сеанс создается, когда пользователь впервые подключается к серверу (без идентификатора сеанса). он не должен быть зарегистрирован для этого. сеансы заканчиваются, когда истекает время ожидания (например, через 30 минут) или когда пользователь (если он вошел в систему) выходит из системы. - person nano7; 21.03.2011
comment
3. обычно, когда ничего конкретного не настроено, создается одна спящая сессия на один запрос. сеанс гибернации также автоматически создается для запросов, когда не выполняется операция с базой данных? Спасибо :-) - person nano7; 21.03.2011
comment
1) Есть конкретные классы, но вы не должны их использовать. Контейнер сервлетов должен предоставить конкретный класс реализации. Если вы кодируете этот конкретный класс, вы нарушаете совместимость с другими серверами приложений. 2) зависит от конфигурации сервера приложений 3) правильно только при использовании OpenSessionInViewFilter. Обычно веб-приложениям на основе Hibernate требуется открытая сессия Hibernate для каждого отдельного запроса. - person Sean Patrick Floyd; 21.03.2011
comment
Благодарность! 2) где можно посмотреть как он настроен? Я использую tomcat 6 и не делал никаких специальных конфигураций. 3) может быть, у нас разные цели, или я не понимаю: я думал, что без OpenSessionInViewFilter и без какой-либо конкретной конфигурации обычно используется один сеанс на запрос, верно? -› есть ли инструмент с открытым исходным кодом, с помощью которого я могу отслеживать сеансы гибернации? (возможно, привязано к httpssessions?) - person nano7; 21.03.2011
comment
2) я не специалист в этом, задайте отдельный вопрос или почитайте документацию 3) нет, без OSIVF гибернативные сессии и веб-запросы/сессии никак не связаны друг с другом - person Sean Patrick Floyd; 21.03.2011