JPA JPQL- bulk 연산

벌크 연산

  • 쿼리 한번으로 여러 테이블 로우 변경
  • executeUpdate()를 사용
em.createQuery("update Member m set m.age = 20")
                .executeUpdate();
  • 한번에 모두 업데이트 된다.

주의

  • 영속성 컨텍스트를 무시하고 dB에 직줩 쿼리
  • 벌크 연산을 먼저 실행
  • 벌크 연산 수행 후 영속성 컨텍스트 초기화 해야 나중에 벌크한 데이터를 가져올때 영속성에 있는 값을 가져오지않고 연산이 된 값들을 다시 가져온다. (만약 clear 하지 않으면 db에만 연산되었고 영속성에는 연산되지 않아 주의 필요)