Sobes.tech
Назад к вопросам
Senior
9

Как создать транзакцию вручную без аннотации @Transactional?

Компании, где спрашивали
Velenes.Tech

Ответ от нейросети

sobes.tech AI

Для создания транзакции вручную без использования аннотации @Transactional в Spring можно использовать PlatformTransactionManager и TransactionTemplate или работать напрямую с TransactionStatus.

Пример с использованием PlatformTransactionManager:

@Autowired
private PlatformTransactionManager transactionManager;

public void manualTransaction() {
    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setIsolationLevel(TransactionDefinition.ISOLATION_DEFAULT);
    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

    TransactionStatus status = transactionManager.getTransaction(def);
    try {
        // Ваши операции с базой данных

        transactionManager.commit(status); // фиксируем транзакцию
    } catch (Exception ex) {
        transactionManager.rollback(status); // откатываем транзакцию при ошибке
        throw ex;
    }
}

Таким образом, вы вручную управляете началом, коммитом и откатом транзакции без использования аннотаций.