[JPA] flush(플러시)

1400 단어 JPAJPA

flush(플러시)

  • 영속성 컨텍스트의 변경내용을 데이터베이스에 반영
  • 쌓아둔 UPDATE,DELETE,INSERT 가 DB에 날라가는 것.
  • 플러시 하는 방법
  • 1. em.flush() 직접호출
  • 2. 트랜잭션 커밋 : 플러시 자동 호출
  • 3. JPQL 쿼리 실행 : 플러시 자동 호출
  • 영속성 컨텍스트를 비우지 않는다.
  • 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화
  • 트랜잭션이라는 작업 단위가 중요 -> 커밋 직전에만 동기화 하면 된다.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Member member = new Member(200L, "Member200");
        em.persist(member);
        em.flush();

        System.out.println("-------------------------");
        //커밋
        tx.commit();

flush()를 한 결과

커밋 전에 insert를 실행.
Hibernate: 
    /* insert hellojpa.Member
        */ insert 
        into
            Member
            (name, id) 
        values
            (?, ?)
----------------------------------------

flush()를 안한 결과

커밋 후 insert를 실행.
----------------------------------------
Hibernate: 
    /* insert hellojpa.Member
        */ insert 
        into
            Member
            (name, id) 
        values
            (?, ?)

좋은 웹페이지 즐겨찾기