트렌젝션에 대해 공부하고 적용하고 있는데 

CUD에만 트렌젝션을 걸어서 격리 시키는건 알고 있습니다. 

하지만 궁금한점은 외부 api호출하는 메소드가 중복이 많이되는데 트렌젝션내부에서 호출하면 문제가 생길까요

ex)

 

@Trandsactional

public void test1(){

  test2();

}

 

public void test2(){

  restTemplate.exchange(request,String.class);

}

 

이렇게 사용하게되면 dirty read가 발생할까요?? 

현재 서비스에서  test2()메소드가 중복이 엄청되서 따로 빼서 사용하고 싶은데 괜찮을지 모르겠어서 질문 남깁니다.

 

  • profile

    언어, 프레임워크, DB 종류, 어떤 데이터를 다루는지에 따라 다르지만 원론적으로 트랜잭션은 최대한 빨리 끝내는 것이 좋습니다. 입력값 검증, 외부 API 연동, 파일 읽기/쓰기 등 복잡한 작업은 트랜잭션을 시작하기 전에 미리 해두거나, 일단 커밋한 후에 따로 하세요. 어차피 이런 부분은 DB에서 ACID를 보장할 수 없기 때문에 트랜잭션 도중에 하는 의미가 없기도 하고요.

  • profile ?
    spring boot + maven + postgresql 이렇게 사용하고 있는데 외부 api에서 받아온 정보를 다른메소드에서 사용할 경우가 많은데 그냥 구조를 바꾸는게 답일까여.