mju-likelion / mju-festival-backend

명지대학교 자연캠퍼스 2024 축제 백엔드
1 stars 0 forks source link

패키지 구조, 클래스명 정리 #135

Closed Dh3356 closed 2 weeks ago

Dh3356 commented 2 weeks ago

Description

패키지 구조, 클래스명 정리

Changes

ServiceUtil 정의 - ReadOnly 작업만 수행하는 공통 메서드를 가짐

Additional context

Dh3356 commented 2 weeks ago

Service 에서 공통으로 사용하는 조회 함수를 ServiceUtil 클래스로 분리 중 생긴 이슈

Service 에서 공통으로 사용하는 읽기 작업들을 ServiceUtil 로 분리

그럼 ServiceUtil는 @Transactional(readOnly = true) 가 될 것이다. @Transactional 은 트랜잭션 전파 레벨이 Default 로 REQUIRED 이다. REQUIRED 는, 부모(함수가 호출된 곳) 트랜잭션이 존재할 시, 해당 트랜잭션을 사용하는 옵션이다.

문제점 : 그럼 ServiceUtil 이 readOnly 여도, ServiceUtil 를 호출하는 곳이 readOnly 가 아니라면, ServiceUtil 에서도 쓰기 작업이 가능해져버린다.

해결 방안 ?

그럼 트랜잭션 전파 레벨을 REQUIRES_NEW 로 해서 매번 새로운 트랜잭션을 시작하게 하면 되지 않을까?

그러므로, REQUIRES_NEW 는 사용을 지양해야 할 것 같다.

그런데..

그러므로

ServiceUtil 을 사용하는 곳을 고려하지 말고, ServiceUtil 에 readOnly 한 Transactional 을 적용하고, 읽기 작업만 수행하도록 하자.