Несколько транзакций в Hibernate - PullRequest
4 голосов
/ 09 августа 2011

Есть ли риск вызова beginTransaction для одного сеанса несколько раз?Я имею в виду, например:

session.beginTransaction();
session.saveOrUpdate(object1);
// .... some works
session.beginTransaction();
session.delete(object2);
// ... some other works
session.getTransaction.commit();


Я сделал это, и, похоже, нет никаких проблем (любое исключение или предупреждение).На самом деле я хочу знать, что происходит, когда я использую транзакцию таким образом.

Ответы [ 2 ]

7 голосов
/ 09 августа 2011

Javadocs дают объяснение

beginTransaction() Начните единицу работы и верните связанный объект транзакции. Если требуется новая базовая транзакция, начните транзакцию. В противном случае продолжите новую работу в контексте существующей базовой транзакции . Класс возвращаемого объекта транзакции определяется свойством hibernate.transaction_factory.

Итак - это не имеет никакого эффекта, оно продолжает использовать существующую транзакцию. Так что не делайте этого, так как это может запутать читателей (включая вас). У вас может быть несколько транзакций, если вы фиксируете первую, а затем запускаете вторую.

1 голос
/ 09 августа 2011

Да. Там не будет каких-либо исключений во время компиляции / выполнения. Однако могут возникнуть нежелательные результаты, которые могут привести к получению частично несохраненных данных. Я столкнулся с этой проблемой некоторое время назад.

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