인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

스프링 DB 2편 - 데이터 접근 활용 기술

@Transactional 내부 호출 시 호출 안되는 점 관련해서 질문사항이 있습니다

작성

·

393

0

안녕하세요. 먼저 좋은 강의 감사 드립니다

@Transactional 내부 호출 시 호출 안되는 점 관련해서 강의를 듣다가 헷갈리는 점이 있어 문의 드립니다.

아래와 같이 컨트롤러에서 유저를 저장하는 부분을 만들어서 호출을 했을 때

userService.addUser() 메소드를 호출하는데 이 때 ,

removeUser() 메소드의 삭제 로직 이후, 삭제가 끝나면 addUser()의 저장 로직을 타게 된다고 가정했을 때

아래와 같이 두 군데의 서비스 메소드 위에 @Transactional 선언을 해주면 내부 호출을 해도 문제가 없을까요?

아니면 처음 시작점인 addUser에만 @Transactional 을 선언해줘도 되는걸까요?

아니면 제가 잘못 이해한 부분이고, 강의에서 말씀하신대로 무조건 다른 클래스를 생성해서 호출하는 방법으로 사용하면 될까요?


@RequestMapping("/api/user")

public class UserController{

@Autowired private UserService userService;

@RequestMapping(method = { RequestMethod.POST }, value = "/save")

public String userSave(){

userService.addUser(param);

}

}


@Service

public class userService{

@Autowired private UserDao userdao;

@Transactional

public String addUser(){

removeUser(); //내부메소드 호출

userdao.insert(); //USER 테이블 저장로직

}

@Transactional

public void removeUser{

userdao.remove(); //USER테이블 삭제로직

}

}

답변 1

OMG님의 프로필 이미지

네 맞습니다

한 번 해보시고, 안되거나 트랜잭션 관련 에러가 발생하면 에러 메시지 첨부해주세요 추가 답변 드리겠습니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기