회원가입 테스트 코드 관련해 질문 드립니다..ㅠ
7분 08초 정도에 회원가입 테스트 코드를 실행하는 부분에서요,,!
MemberServiceTest 클래스에 @Transactional을 걸어서
회원가입() 메소드를 하나의 트랜잭션으로 관리하는 것으로 이해했습니다...
memberService.join(member); 으로 persistence context에 member를 영속화 시킨 상태인데,
그 다음 코드인 memberRepository.findOne(savedId);에서, 왜 select 문이 나가는거죠?
하나의 트랜잭션이고, member가 영속 상태라서 1차 캐시에서 관리되면, context에서 가져와야 하는게 아닌가요?...
트랜잭션을 롤백한다는 것의 의미가 DB의 트랜잭션을 롤백한다는 것 뿐만 아닌 영속성 컨텍스트도 롤백하는 것을 의미하나요?..
만약 그렇다면, 저는 @Transactional을 메소드 단위로 걸었는데, 왜 회원가입() 메소드 중간에 롤백이 되는 건가요?..ㅠ
아예 애초부터 스프링에서의 트랜잭션 롤백은 영속성 컨텍스트에 반영조차 하지 않는 거라고 봐야 하나요?..
너무 헷갈립니다 ㅠ.ㅠ
답변 2
1
안녕하세요. qpal1zm23님, 공식 서포터즈 David입니다.
가입시 중복회원인지 검증하는 로직이 있습니다.
여기서 발생한 조회 쿼리인걸로 보입니다.
확인 부탁드립니다.🙂
감사합니다.
1
안녕하세요, 인프런 AI 인턴입니다.
같은 강의에서 비슷한 내용의 질문에 대한 답변이 있어 해당 내용을 참고하시면 도움이 될 것 같습니다. 질문하신 회원가입 테스트 코드와 관련된 부분에서 @Transactional 어노테이션의 역할과 영속성 컨텍스트, 그리고 1차 캐시에 대한 이해를 돕는 내용입니다.
아래 링크에서 강사님의 답변을 확인해보세요.
강사님께서 설명해주신 내용을 요약하자면, @Transactional 어노테이션이 있으면 테스트 실행 전에 트랜잭션이 시작되며, 해당 트랜잭션 내에서 영속성 컨텍스트가 유지되어 1차 캐시에서 객체를 관리합니다. 그러나 @Transactional 어노테이션이 없으면, 각각의 메소드마다 별개의 트랜잭션이 생성되고 종료되어 영속성 컨텍스트가 그때마다 새로 생성되어 버리는 것으로 이해하시면 됩니다.
질문하신 상황에서는 select 문이 나가는 것이 예상치 못한 동작으로 보이므로, 이와 관련하여 실제로 어떤 상황에서 select 문이 실행되는지, 그리고 트랜잭션과 영속성 컨텍스트가 어떻게 관리되는지를 좀 더 자세히 알아보는 것이 좋겠습니다.
강사님의 답변을 통해 궁금증이 해소되기를 바랍니다.
sdk 설정 오류
0
53
2
오탈자 - @Transactional
0
56
1
src/test/resources 테스트 경로 문제
0
50
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
64
1
MemberRepositoryTest 실행오류
0
81
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
184
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
142
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
51
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
71
1
기본 생성자
0
60
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
103
1
멤버서비스테스트 부분에서 막힙니다.
0
165
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
116
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
120
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
114
1
24분 27초 연관관계 편의 메서드 위치
0
113
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
109
2
빌드 툴, Gradle
0
59
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
77
2
Repository에서 EntityManager 주입 방식 차이
0
90
1
롬복과 사용자 정의 setter 메서드
0
73
1
주문 목록 조회 fetch join 질문드립니다
0
82
1
dirty checking 질문드립니다.
0
83
1
동시성 관련 질문입니다
0
75
1





