Конфигурация отката транзакции в спящем режиме - PullRequest
0 голосов
/ 26 ноября 2018

Как настроить hibernate для отката транзакций в связанных таблицах в случае исключений?У меня есть таблица транзакций и есть связанные таблицы, в которых необходимо сохранить данные, но если что-то пойдет не так, я хочу откатить их все.

1 Ответ

0 голосов
/ 26 ноября 2018

Транзакция - это функция базы данных, которая гарантирует атомарность. Она всегда запускается и фиксируется или откатывается на уровне базы данных.

Используя Hibernate, вы можете запускать, фиксировать илиоткат транзакции .(Предположим, у вас есть экземпляр Hibernate SessionFactory)

    Session session = sessionFactory.getCurrentSession();
    session.getTransaction().begin();
    try {
        // perform some data changes ...
        session.getTransaction().commit(); // will save all changes 
    } catch (Exception e) {
        session.getTransaction().rollback(); // will discard all changes
        throw e;
    } finally {
        session.close();
    }

После запуска транзакции вы можете начать изменять данные в разных таблицах. Все изменения, которые были сделаны в области действиятранзакции будут либо зафиксированы, либо отменены.

Обратите внимание , что когда вы используете Hibernate для запуска транзакции, вызывает JDBC Driver под капотом ( см. Транзакции JDBC ), а драйвер использует правильный SQL-запрос для запуска транзакции (см. PostgreSQL START TRANSACTION ).

Вы не должны управлять транзакциями вручную в реальных проектах.Такие фреймворки, как Spring , обеспечивают гораздо более сложное декларативное управление транзакциями.

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