개발/Spring20 [Spring] 동일한 클래스 내에서 내부 메서드 호출시 @Transactional 적용 안되는 이슈 프로젝트를 개발하던 도중 다음과 같은 이슈가 발생했다.이슈아래 코드는 낙관적 락을 이용하여, 메뉴 재고에 대한 동시성 문제를 해결하기 위한 코드이다.낙관적 락에서 락 획득이 실패한 경우에는 개발자가 실패에 대한 처리를 직접 구현해주어야 하기 때문에, 다음과 같이 무한 루프를 통해서 일정시간 대기하고 다시 락 획득을 할 수 있도록 구현하였다. * 실제 매번 무한 루프를 돌며 락을 재획득하는 방법은 성능적인 측면에서 비효율적일 수 있다. 하지만 예시를 쉽게 작성하기 위해서 다음과 같이 작성하였습니다. ✍🏻 중요한 것은 낙관적 락(@Lock(value = LockModeType.OPTIMISTIC))을 사용하는 decrease 메서드는 반드시 트랜잭션 내에서 실행해야 한다는 점이다.@Servicepublic.. 2023. 4. 2. [Spring] OSIV 에 대해서 Spring으로 웹 애플리케이션을 실행하였을 때, 특별한 설정을 해주지 않으면 아래와 같은 경고가 출력되는 것을 확인할 수 있다. 이번 포스팅을 통해 해당 경고는 왜 출력되는 것이고, spring.jpa.open-in-view가 무엇인지에 대해서 정리하려고 한다. 2023-03-24 20:52:47.034 WARN 63885 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open.. 2023. 3. 24. 이전 1 2 3 4 다음