VISH_a_CODE Ответов: 1

Почему методы commit и rollback даны в классе transaction, а не в самом сеансовом классе?


Здравствуйте друзья,
У меня только что возник вопрос о методах commit() и rollback (), используемых классом Transaction. Но в классе Session есть методы save() и update (). Почему методы commit() и rollback() не объявлены с помощью методов save() и update() в классе Session и объявлены в классе Transaction.

мы пишем:
Сессия ses = factory.openSession();
Транзакция tx = session.beginTransaction();
затем:
пробовать{
. . .
сессии.сохранить();
Техас.совершать();
} catch(исключение e){
. . .
Техас.rollack();
}

Спасибо.

Что я уже пробовал:

Я попытался найти ответ с помощью API docs, а также попытался погуглить его.

Afzaal Ahmad Zeeshan

Потому что фиксация и откат связаны с транзакциями, а сохранение и обновление-с объектами сеанса.

Если вы хотите расширить функциональность, вы всегда можете добавить больше функций к типам объектов. Общий случай использования отличается, и именно поэтому они не поддерживают такое поведение.

VISH_a_CODE

Да, ваша мысль верна, но все же я ищу, есть ли какая-то другая причина. Хотя Спасибо за ваш комментарий. Если я найду какую-то другую причину, я напишу здесь, но если я этого не сделал, то ваша теория и ниже приведенное решение Мехди Голама должны быть только ответами.

1 Ответов

Рейтинг:
1

Mehdi Gholam

Вы можете "сохранить" что-то с помощью транзакции или без нее, session.beginTransaction() просто указывает, что следующий (блок кода) должен полностью работать или быть откатан в случае неудачи, так что никаких побочных эффектов нет.