Если в начале запроса / конце запроса подразумевается http-запрос, то это обычно делается с помощью фильтра сервлетов, который открывает / закрывает сессию для вас.Этот шаблон проектирования называется OpenSessionInView (Filter).Вы можете получить подробности здесь .
Этот шаблон полезен, только если ваше приложение отображается в той же JVM, где существует Hibernate Session.Если ваш уровень доступа к данным находится на другой виртуальной машине Java, чем на уровне рендеринга представления, вам придется (с нетерпением) выбрать все необходимые компоненты модели, прежде чем отправлять запрос на рендеринг представления.
Если вы используете spring (или EJB3), вы можете получить Session (EntityManager), внедренный в ваши классы доступа к данным, поэтому вам не нужно будет вручную работать над открытием и закрытием сеанса.
В идеале вам не нужно вручную открывать / закрывать сеанс/ транзакция (потому что она оставляет шансы пропустить session.close () или tx.commit () и лайки).Вместо этого используйте предоставленный контейнером JPA entitymanager или используйте Spring для управления им.