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