Spring with Transactions

Transaction

Bean for TransactionManager

<beans>
    ...
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <tx:annotation-driven/>
</beans>

Transaction Propagation Levels

  • REQUIRED – выполняется в текущей транзакции, если транзакции нет – создаёт новую транзакцию. Выставлен по умолчанию.

  • SUPPORTS – выполняется в текущей транзакции, если транзакции нет – выполняется вне транзакции

  • MANDATORY – выполняется в текущей транзакции, если транзакции нет – выбрасывает исключение

  • REQUIRES_NEW – создаёт новую транзакцию, приостанавливает текущую, если та существует

Transaction Propagation Levels

  • NOT_SUPPORTED – выполняется вне транзакции, приостанавливает текущую, если та существует

  • NEVER – выполняется вне транзакции, выбрасывает исключение, если текущая существует

  • NESTED – выполняется как встроенная, если существует текущая, либо создаётся новая транзакция. Поддерживается не всеми TransactionManager