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

김태민님의 프로필 이미지

작성한 질문수

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

회원 등록

회원가입 할때

작성

·

210

0

회원가입 할때 memberService.join(member)를 이용해서 db에 회원 정보를 보내잖아요? 근데 코드를 뜯어보면 join안에는 중복회원 검증인 validateDuplicateMember와 실질적으로 영속성 컨텍스트에 올리는 memberRepository.save(member)가 실행되는데 save함수 안에는 em.persist만 있을뿐 em.flush가 없는데 어떻게 insert가 될 수 있는건가요?

답변 2

0

OMG님의 프로필 이미지

2021. 11. 24. 23:44

안녕하세요. 김태민님, 공식 서포터즈 OMG입니다.

네 맞습니다.

@Transactional 혹은 @Transactional(readOnly = false)를 선언할 경우 해당 클래스나 메서드에 트랜잭션을 적용하며 메서드 종료 할 때 트랜젹선을 커밋합니다. 트랜잭션 커밋으로 인해 flush가 자동으로 실행된 것입니다.

@Transactional(readOnly=true)로 설정 혹은 @Transactional을 제거하고 확인해보셔도 이해하는데에 도움 되리라 생각합니다.

감사합니다.

0

김태민님의 프로필 이미지
김태민
질문자

2021. 11. 24. 20:18

@Transactional 때문인가요?