Coding 01

private 메서드와 @Transactional 본문

기술면접

private 메서드와 @Transactional

하루우울루 2025. 1. 3. 10:55

private 메서드에 @Transactional을 선언하면 트랜잭션이 동작을 하는가?

결론은 동작하지 않는다.

 

트랜잭션은 spring에서 프록시로 동작한다. 실제 객체를 감사는 프록시 객체가 생성되어 트랜잭션을 처리하는데, 프록시는 public 메서드 호출을 인터셉트하여 트랜잭션 처리 로직을 수행한다.

그래서 외부에서 접근할 수 없는 private메서드를 가로챌 수가 없다.

 

해결 방법으로는 public메서드에 @Transactional을 선언하고 private메서드를 호출하는 방법으로 구현할 수 있다.

위의 이유와 마찬가지로 private가 아니더라도 protected에서도 동작하지 않는다.

해결방법

 

'기술면접' 카테고리의 다른 글

SSR과 CSR  (0) 2025.01.07
TimeOut  (0) 2025.01.07
CORS  (1) 2025.01.02
HTTP 메서드에서 멱등성이란?  (0) 2024.12.27
단위 테스트와 통합 테스트의 차이  (0) 2024.12.23