Issue1 [Spring] 동일한 클래스 내에서 내부 메서드 호출시 @Transactional 적용 안되는 이슈 프로젝트를 개발하던 도중 다음과 같은 이슈가 발생했다. 이슈 아래 코드는 낙관적 락을 이용하여, 메뉴 재고에 대한 동시성 문제를 해결하기 위한 코드이다. 낙관적 락에서 락 획득이 실패한 경우에는 개발자가 실패에 대한 처리를 직접 구현해주어야 하기 때문에, 다음과 같이 무한 루프를 통해서 일정시간 대기하고 다시 락 획득을 할 수 있도록 구현하였다. * 실제 매번 무한 루프를 돌며 락을 재획득하는 방법은 성능적인 측면에서 비효율적일 수 있다. 하지만 예시를 쉽게 작성하기 위해서 다음과 같이 작성하였습니다. ✍🏻 중요한 것은 낙관적 락(@Lock(value = LockModeType.OPTIMISTIC))을 사용하는 decrease 메서드는 반드시 트랜잭션 내에서 실행해야 한다는 점이다. @Service pu.. 2023. 4. 2. 이전 1 다음