Free Lines Arrow
본문 바로가기
DataBase/JPA

[JPA] 플러시

by skahn1215 2021. 7. 30.
728x90
반응형

플러시란?

영속성 컨텍스트의 변경 내용을

데이터베이스에 반영한다.

 

 

 

 

특징

  • 영속성 컨텍스트를 비우지 않음 
  •  영속성 컨텍스트의 변경내용을 데이터베이스에 동기화 
  •  트랜잭션이라는 작업 단위가 중요 -> 커밋 직전에만 동기화 하면 됨

 

 

플러시발생 시점

  • 변경감지
  • 수정된 엔티티 쓰기 지연 SQL 저장소 등록시
  • 쓰기지연 SQL 저장소의 쿼리를 데이터 베이스에 전송
    - 등록, 수정, 삭제 쿼리시

 

 

 

영속성 컨텍스트를 플러시 하는방법

  • em.flush(): 수동 호출
    EntityManager em = emf.createEntityManager();
    EntityTransaction tx = em.getTransaction();
    tx.begin();
    Member member = new Member(150L,"A");
    
    // 저장 되진 않는다.
    em.persist(member);
    
    // 그래도 쿼리가 어떻게 나가는지
    // 아니면 저장된 데이터를 보고 싶으면
    em.flus(); 를 해주면 된다.​
  • 트랜잭션 커밋: 자동 호출

  • JPQL 쿼리실행: 자동 호출
    JPQL 쿼리 수행시 자동호출 되는 이유는 다음과 같다.
    persist로 여러개의 객체를 영속성에 넘겨준 후
    JPQL에서 전체 조회를 하면 member1,2,3 객체들은 DB에 저장되지 않았기 때문에
    조회가 안될것이다 그렇기 때문에 JPQL 시 자동으로 flus 가 수행되어 DB에 저장된다.
    persist.(member1)
    persist.(member2)
    persist.(member3)
    
    //중간에 JPQL 실행
    query = em.createQuery("select m from Member m", Member.class);
    List<Member> members= query.getResultList();​

 

 

 

 

 

참고

https://www.inflearn.com/course/ORM-JPA-Basic/lecture/21695?tab=curriculum&speed=1 

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

 

728x90
반응형

'DataBase > JPA' 카테고리의 다른 글

[JPA] 엔티티, 테이블, 컬럼 매핑  (0) 2021.07.30
[JPA] 준영속성  (0) 2021.07.30
[JPA] 영속성 컨텍스트  (0) 2021.07.30
[JPA] JPA CRUD 기본  (0) 2021.07.30
[JPA] JPA 환경설정  (0) 2021.07.29

댓글