inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[Lv2] 현업 개발자의 JPA 완전 정복 - 영속성 컨텍스트부터 실무 패턴까지

2-3. 🚽 플러시(Flush): "물이 내려가는 순간" 영속성 컨텍스트의 동기화

FlushModeType.COMMIT (12:45) 예시코드 질문

2

알 깨는 병아리

작성한 질문수 4

0

안녕하세요,

FlushModeType.COMMIT에 대한 부작용으로 기재하신 예시코드 관련 질문 드립니다.

em.setFlushMode(FlushModeType.COMMIT);

// 1. 회원 A 저장
em.persist(new Member("회원A")); 

// 2. 회원 조회 (JPQL)
// 플러시가 안 일어남 -> DB에는 '회원A'가 없음 -> 조회 결과 0건
List<Member> list = 
    em.createQuery("select m from Member m where m.name = '회원A'", Member.class)
      .getResultList();

// 결과: 방금 저장했는데 조회가 안 되는 미스터리 발생 😱

만약 Member 엔티티 클래스의 ID 생성 전략이 IDENTITY인 경우

em.persist(new Member("회원A")); 에 의해 INSERT 쿼리가 실행되므로, 그 아래 코드에서는 해당 데이터가 조회되지 않나요?

데이터 불일치 문제가 발생할 수 있으니 COMMIT 모드는 확실한 이해 하에 사용하라는 것은 확실히 이해했습니다! 다만 예시코드 보다가 급 궁금해져서요ㅎㅎ

java spring spring-boot jpa spring-jpa

답변 0

미션1 진행방법 관련

0

3

0

클로드코드 명령어 - 대화&세션관리부분 강의자료 빈폴더

0

16

1

Spock given and가 검증을 하는지

0

15

1

9번 강의 save 메서드 질문

0

16

1

Issuance 테이블에 status, couponId 인덱스가 꼭 필요할까요?

2

24

1

readme에 대한 자료는 따로 받아볼수 있나요?

0

16

1

11강 따라하는중에 오류가 발생해서 문의드립니다.

0

21

1

InvalidCurriculumException DIP 적용 여부 문의

0

20

1

ProductController 에서 타협하지 않는다면 어떤 형태가 되나요?

1

30

2

섹션2, 대화&세션관리 수업 자료 누락

0

33

2

영상 다운로드는 안되나요?

0

42

1

IntelliJ IDEA 체험 만료

0

37

2

부하 테스트 시 설정 관련 질문드립니다

1

64

2

HelloSpringApplication.java 클래스 실행 오류

0

40

1

build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)

0

61

2

예외처리 3강 문의

0

55

1

챌린지 시작일 문의

0

53

0

Inner class로 Config를 지정하는 이유

0

38

1

26년2회 실기기출은 언제쯤...

0

86

2

네이버 API | '검색 - 책' API 제공 중단

0

64

2

ArticleReadService 관련 질문

0

39

1

kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.

1

94

1

이론 공부법 요약본 버전 업데이트 문의

0

64

2

자막 오타 제보

0

54

1