public 이 아닌 메소드는 "@Transactional" 을 사용해서는 안됩니다.

 

public 이 아닌 메소드에 @Transactional 어노테이션을 다는것은 쓸모없고 오해의 소지가 있습니다. 스프링은 public 메소드가 아닌 메소드를 보지 않고, 그로 인해 트랜잭션 설정을 하지 않기 때문입니다. 또한, 스프링은 내부의 다른 메소드에 의해 호출된 메소드에 대해서도 트랜잭션 설정을 제공하지 않습니다.

따라서, @Transactional 어노테이션을 private 메소드에 다는경우, 런타임 에러 혹은 예외를 초래할 수 있습니다.

규칙을 어긴 코드

@Transactional  // 규칙을 어긴 코드
private void doTheThing(ArgClass arg) {
    // ...
}

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project