ㅏ
-
동시성 제어 syncronized와 @TransactionalBackEnd/스프링 2022. 9. 26. 14:51
서비스에 @Transactional 어노테이션만 붙이면 동시에 자원에 접근하는 스레드들에 레이스 컨디션이 발생했을 경우, 기대와 다르게 동작할 수 있다. @RequiredArgsConstructor @Service public class StockService { private final StockRepository stockRepository; @Transactional public void decrease(Long id, Long quantity){ Stock stock = stockRepository.findById(id).orElseThrow(); stock.decrease(quantity); stockRepository.saveAndFlush(stock); } } 1. 트랜잭션이 시작되는 메서드..