Встречается на собеседованиях • сегодня

Можно ли программно управлять транзакциями в Spring

Да, в Spring можно программно управлять транзакциями через TransactionTemplate или PlatformTransactionManager. Это полезно, когда нужен точный контроль над границами транзакции.

Пример с TransactionTemplate:

java
@Autowired
private TransactionTemplate transactionTemplate;

public void performTransactionalOperation() {
    transactionTemplate.execute(status -> {
        try {
            // Бизнес-логика
            return result;
        } catch (Exception e) {
            status.setRollbackOnly(); // Откат при ошибке
            throw e;
        }
    });
}

Пример с PlatformTransactionManager:

java
@Autowired
private PlatformTransactionManager transactionManager;

public void performOperation() {
    TransactionDefinition def = new DefaultTransactionDefinition();
    TransactionStatus status = transactionManager.getTransaction(def);
    
    try {
        // Бизнес-логика
        transactionManager.commit(status);
    } catch (Exception e) {
        transactionManager.rollback(status);
        throw e;
    }
}

Программное управление дает гибкость, но обычно предпочтительнее декларативный подход (@Transactional).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы