Использование вложенного сеанса с Hibernate - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь создать новый сеанс внутри метода, который, вероятно, будет вызываться из других методов, где сеанс уже создан, например:

//Method "Main" scope
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
tx.begin();
(...)
MyObject object = new MyObject();
object.myMethod();
(...)
tx.commit();

И myMethod ():

//Session session = factory.openSession(); //Doesnt works.
Session session = factory.getCurrentSession(); 

Мне не нравится это решение, потому что myMehthod может быть вызван из любой области, возможно, нет открытого сеанса.Возможно, новый класс для обработки соединений с методом для получения сеанса (получения текущего, если он открыт, или создания нового, если нет).

В любом случае у меня есть другая проблема: возможно, мне нужны изменения myMehotd ()Метод в моей базе данных, прежде чем совершить основную транзакцию.Но я не могу зафиксировать транзакцию в области действия метода, поскольку возможно, что работа еще не завершена в это время (метод вызывающей стороны все еще выполняет работу с БД, однажды вызванной методом myMethod).

Или, возможно, мне необходимо выполнить фиксациюизменения в методе myMethod.

Можно ли создавать вложенные транзакции?

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