JTalks TS. Transactions in Spring & EJB

 
 
 
Сообщения:9895
  • Общая теория
  • Transaction Propagation
  • Проблемы при работе с транзакциями

YouTube

текст

Vimeo (HD запись)
 
 
Сообщения:9895
Уточнения по поводу локальных транзакций (исходя из словаря используемого во время сессии).. В JDBC есть уровень TRANSACTION_NONE который значит, что JDBC драйвер не поддерживает транзакции. Однако некоторые драйвера все равно поддерживают этот уровень и разрешают чтение данных без транзакций. Вот здесь, например, освещается DB2.
Хотя похоже, что в большинстве случаев локальной транзакцией-таки называют ту, что не распрделенная.
Если у вас стоит autocommit=true, то скорей всего вы будете работать короткой (а не в "локальной") транзакции, при этом уровень изоляции используется тот, что в вашем драйвере по умолчанию (чаще всего это READ COMMITTED).
 
 
Сообщения:9895
По поводу вложенных REQUIRES_NEW - я проверил исходники спринга и поведение не такое о каком я говорил во время сессии (что мол когда внутренний сервис откатывает транзакцию, то внешний сервис уже не сможет откатить и выбросит исключение). На самом деле в AbstractPlatformTransactionManager есть такие строки:
				else if (status.isNewTransaction()) {
					if (status.isDebug()) {
						logger.debug("Initiating transaction rollback");
					}
					doRollback(status);
				}
И внутренний сервис, т.к. он не стартовал транзакцию и в нем статус не new, он и не откатывает транзакцию. Исключение пробрасывается внешнему сервису, ну а там уже транзакция и откатывается лишь один раз.
ЕЖИ не проверял, но подозреваю что там то же самое.
 
Модераторы:masyan
Сейчас эту тему просматривают:Нет