Требуется ли фиксация транзакции для запуска триггера?

#java #database #hibernate #transactions #spring-transactions

#java #База данных #переход в спящий режим #транзакции #spring-транзакции

Вопрос:

В моем приложении я обновляю таблицу через Hibernate, и для этой таблицы есть триггер ОБНОВЛЕНИЯ. Мой вопрос в том, нужно ли мне фиксировать ту транзакцию (транзакцию Spring), в рамках которой выполняется эта операция обновления, чтобы запустить триггер?

Я использую транзакцию Spring и базу данных Oracle

Спасибо.

Ответ №1:

Да, триггеры уровня базы данных запускаются, когда данные попадают на диск. Это происходит только после завершения фиксации.

Ответ №2:

Нет, но Hibernate часто ожидает завершения транзакции, чтобы запустить все обновления SQL, поэтому это может выглядеть именно так.

Попробуйте удалить свои изменения с помощью EntityManager#flush (JPA api) или JpaRepository#flush (из Spring Data) или с помощью JpaRepository#saveAndFlush объекта после обновления.