Информацию о контекстных сессиях можно найти по этой ссылке .
Что касается других ваших вопросов, они все связаны между собой.Транзакции гибернации должны быть атомарными, но, кроме того, область транзакции и ее сеанс должны быть ограничены единицей работы.Другими словами, вы должны открывать сеанс, когда вам нужно что-то сохранить или получить, и закрыть его, когда вы закончите.
Как правило, рекомендуется использовать шаблон проектирования DAO для Hibernate в сочетании с каким-либоменеджер сессий, который даст вам одноэтапную сессию.
Я очень рекомендую прочитать эту статью о сессиях и транзакциях Hibernate.Он объясняет то, о чем я только что говорил, более подробно и обсуждает, как реализовать шаблон DAO.