Sobes.tech
Назад к вопросам
Junior — Middle
69

Каким образом реализовать управление транзакциями в рамках фреймворка Spring?

Компании, где спрашивали
СБЕРСБЕР

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

sobes.tech AI

В Spring управление транзакциями реализуется с помощью аннотации @Transactional и/или программного API PlatformTransactionManager.

Основные способы:

  1. Аннотация @Transactional
    • Помещается над классом или методом.
    • Spring автоматически начинает транзакцию при входе в метод и коммитит или откатывает её в зависимости от результата.
    • Можно настроить параметры, например, propagation, isolation, rollbackFor.
@Service
public class UserService {

    @Transactional
    public void createUser(User user) {
        userRepository.save(user);
        // другие операции в рамках одной транзакции
    }
}
  1. Программное управление транзакциями
    • Используется PlatformTransactionManager и TransactionTemplate.
    • Позволяет более гибко управлять транзакциями, например, в сложных сценариях.
@Autowired
private PlatformTransactionManager transactionManager;

public void doInTransaction() {
    TransactionTemplate template = new TransactionTemplate(transactionManager);
    template.execute(status -> {
        // код в транзакции
        return null;
    });
}

Spring поддерживает декларативное управление транзакциями, что упрощает код и повышает читаемость. Важно правильно настроить DataSource и TransactionManager в конфигурации приложения.