벌크 연산

정재현·2022년 12월 20일
0

주의사항

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
profile
back end개발자로 성장하기

0개의 댓글

관련 채용 정보