Код IT
← Каталог

Работа с базами данных из Java — Декларативные транзакции в Spring

Фрагмент из «Работа с базами данных из Java»: Декларативные транзакции в Spring.

Java main.java
@Service
public class OrderService {

    @Transactional
    public Order createOrder(Long userId, List<OrderItem> items) {
        User user = userRepository.findById(userId)
            .orElseThrow(() -> new EntityNotFoundException("User not found"));

        Order order = new Order();
        order.setUser(user);
        order.setItems(items);
        order.setStatus(OrderStatus.CREATED);
        order = orderRepository.save(order); // flush происходит автоматически

        paymentService.charge(user, order.getTotal()); // вызов другого @Transactional-метода
        return order;
    }
}
@Service
public class OrderService {

    @Transactional
    public Order createOrder(Long userId, List<OrderItem> items) {
        User user = userRepository.findById(userId)
            .orElseThrow(() -> new EntityNotFoundException("User not found"));

        Order order = new Order();
        order.setUser(user);
        order.setItems(items);
        order.setStatus(OrderStatus.CREATED);
        order = orderRepository.save(order); // flush происходит автоматически

        paymentService.charge(user, order.getTotal()); // вызов другого @Transactional-метода
        return order;
    }
}