Я изучаю Hibernate и наткнулся на getCurrentSession (). Насколько мне известно,
- Когда вы вызываете SessionFactory.getCurrentSession, он создает новый сеанс, если он не существует, в противном случае используйте тот же сеанс, который находится в текущем контексте гибернации.
- Это автоматически сбрасывает и закрывает сеанс, когда транзакция завершается, поэтому вам не нужно делать это извне.
Но у меня мало сомнений в этом.
- Когда я запускаю свое приложение в это время, сеанса не будет. Поэтому, когда я хочу выполнить любой запрос, спящий режим создаст сеанс, поскольку в настоящее время сеанс недоступен. Это правильно?
- getCurrentSession () автоматически сбрасывает и закрывает сеанс. Итак, допустим, я выполнил один запрос, моя транзакция завершена. Теперь, когда начинается новая транзакция, будет ли она создавать новую сессию или будет использовать ту же сессию? Что означает currentSession для новой транзакции? На какую сессию он будет ссылаться? Связано ли это с какой-то вложенной транзакцией, в которой будет использоваться тот же сеанс?
- В случае вложенной транзакции, как она будет себя вести? Допустим, я сохраняю объект Student, но перед его сохранением мне нужно получить некоторые данные из БД и сохранить некоторые данные в БД. Итак, у этих двух операций есть отдельные сеанс и транзакция, или они будут частью одного сеанса / транзакции? Не уверен, как это будет работать в таком сценарии.