트렌젝션에 대해 공부하고 적용하고 있는데
CUD에만 트렌젝션을 걸어서 격리 시키는건 알고 있습니다.
하지만 궁금한점은 외부 api호출하는 메소드가 중복이 많이되는데 트렌젝션내부에서 호출하면 문제가 생길까요
ex)
@Trandsactional
public void test1(){
test2();
}
public void test2(){
restTemplate.exchange(request,String.class);
}
이렇게 사용하게되면 dirty read가 발생할까요??
현재 서비스에서 test2()메소드가 중복이 엄청되서 따로 빼서 사용하고 싶은데 괜찮을지 모르겠어서 질문 남깁니다.
언어, 프레임워크, DB 종류, 어떤 데이터를 다루는지에 따라 다르지만 원론적으로 트랜잭션은 최대한 빨리 끝내는 것이 좋습니다. 입력값 검증, 외부 API 연동, 파일 읽기/쓰기 등 복잡한 작업은 트랜잭션을 시작하기 전에 미리 해두거나, 일단 커밋한 후에 따로 하세요. 어차피 이런 부분은 DB에서 ACID를 보장할 수 없기 때문에 트랜잭션 도중에 하는 의미가 없기도 하고요.