강의

멘토링

커뮤니티

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

알닉님의 프로필 이미지
알닉

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

회원 기능 테스트

member.join할때 궁금한게 있습니다.

작성

·

370

0

MemberServiceTest 클래스에 회원가입 테스트에서 join을 할때 인서트 쿼리가 안나간이유가 em.persist만 해줘서 영속성컨텍스트에 있기때문이라고 하셨는데

@Transactional
public Long join(Member member) {
    validateDuplicateMember(member);
    memberRepository.save(member);
    return member.getId();
}

여기에 @Transactional이 걸려있으니 영속성 컨텍스트가 아니라 db에 저장되어야하는거 아닌가요? @Transactional은 트랜잭션이 끝나면 커밋을 해주는걸로 알고 있는데...그럼 영속성 컨텍스트가 비워질거라고 생각이 되는데..좀 헷갈립니다..

답변 1

0

안녕하세요. 재미사마님, 공식 서포터즈 OMG입니다.

테스트라면 롤백이 된 거 같습니다.

아래 링크를 참고해주세요.

https://www.inflearn.com/questions/112512/

감사합니다.

알닉님의 프로필 이미지
알닉
질문자

답변 감사합니다.

네 테스트에서 @Transactional 을 사용하면 롤백이 되는건 알고 있는데

join이 일어났을때 커밋이 되면 영속성컨텍스트가 비워질거라고 생각했습니다.

그런데 서비스단에 @Transactional이 걸려있어도 테스트에서 @Transactional이 걸려 있으면

모두 롤백된다는건데 언제 롤백이 되는지 그 시점이 궁금했습니다.

알닉님의 프로필 이미지
알닉

작성한 질문수

질문하기