• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

IDENTITY - 트랜잭션을 지원하는 쓰기지연

22.10.24 15:03 작성 조회수 136

0

JPA책의 135P를 보면

IDENTITY는 트랜잭션을 지원하는 쓰기지연이 안된다고 했는데 save를 제외한 update, delete등은 동작하지않나요?

SAVE일때는 디비에저장해야 식별자를 구할수있으니까 그랬던거고 UPDATE는 이미 식별자를 알고있잖아요
아래와같이 테스트를 해봤을때도 update문이 가장 마지막에 출력이 됩니다.

@Test
@Commit
@Transactional
public void Parent_Child(){
   Member member = Member.builder().name("김길동").build();
   em.persist(member);
   System.out.println("-=====");
   em.flush();
   em.clear();
   Member member1 = em.find(Member.class, member.getId());
   member1.setName("이름바꿈");
   System.out.println("====");


}

답변 1

답변을 작성해보세요.

1

David님의 프로필

David

2022.10.27

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

트랜잭션이 끝나면 flush가 호출되기 때문에 update 쿼리가 나가는 것은 정상으로 보여집니다.

감사합니다.