강의

멘토링

로드맵

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

김태민님의 프로필 이미지
김태민

작성한 질문수

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

회원 등록

회원가입 할때

작성

·

292

0

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

퀴즈

회원 가입 시 화면 입력 데이터를 엔티티 객체 대신 별도의 Form 객체로 받는 주된 이유는 무엇일까요?

데이터베이스 성능을 최적화하기 위해서

화면 종속적인 데이터나 유효성 검증 로직을 분리하기 위해서

JPA 영속성 컨텍스트와 직접적인 관계를 맺기 위해서

코드의 자동 생성 기능을 활용하기 위해서

답변 2

0

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

네 맞습니다.

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

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

감사합니다.

0

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

@Transactional 때문인가요?

김태민님의 프로필 이미지
김태민

작성한 질문수

질문하기