Назад к вопросам
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;
}
}
Таким образом, вы вручную управляете началом, коммитом и откатом транзакции без использования аннотаций.