insert, update 등등
jpa에서 벌크 연산을 실행하면 자동으로 FLUSH가 호출 된다.
Team team1 = new Team("team1");
em.persist(team1);
Team team2 = new Team("team2");
em.persist(team2);
Member member1 = new Member("member1", "jeonju", team1);
em.persist(member1);
Member member2 = new Member("member2", "seoul", team2);
em.persist(member2);
Member member3 = new Member("member3", "busan", team1);
em.persist(member3);
// 이 시점에 FLUSH 실행
int resultCount = em.createQuery("update Member m set m.city = 'seoul'")
.executeUpdate();
// 결과 반영 개수
System.out.println(resultCount);
이 후 영속성 컨텍스트를 clear하지 않고 죄회시 업데이트된 결과를 볼 수 없다
System.out.println(member1.getCity());
Member findMember = em.find(Member.class, member1.getId());
System.out.println(findMember.getCity());
결과 : 업데이트 쿼리는 됬지만 영속성 컨텍스트의 내용은 그대로 이므로
벌크 연산 후 영속성 컨텍스트를 clear() 후 DB에서 조회해야된다
Hibernate:
update
member
set
city='seoul'
jeonju
jeonju