일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- JPA준영속 상태
- jpa 플러쉬
- JS
- 준영속상태
- 코프링
- jpa 영속성
- springboot gradle 모듈 프로젝트
- 스프링부트
- ja async
- JPA플러시
- springboot 모듈
- spring gradle 모듈
- spring 모듈 프로젝트
- JPA플러쉬
- jpa준영속
- jpa 플러시
- javascript async
- javascript async await
- javascript api 호출
- js fetch
- gradle 모듈 프로젝트
- 코틀린 클래스
- js async await
- javascript fetch
- js await
- Flutter
- JavaScript
- 코틀린
- js api 호출
- JPA
Archives
- Today
- Total
매일 한줄 코딩
[JPA] 플러시 본문
3. 플러시
플러시란 ?
영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 것
플러시 발생하면?
- 변경 감지
- 수정된 엔티티 쓰기 지연 SQL 저장소에 등록
- 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리)
영속성 컨텍스트를 플러시하는 방법
- em.flush()
- 플러쉬를 하더라도, 1차캐시는 없어지지 않음, 쓰기지연 SQL 저장소에 등록된 쿼리를 데이터베이스에 반영하는 과정일 뿐.
- 트랜젝션 커밋 ( 플러시 자동 호출)
- JPQL 쿼리 실행 ( 플러시 자동 호출 )
em.persist(memberA); em.persist(memberB); em.persist(memberC); query = em.createQuery("select m from Member m", Member.class); // 이때에 플러시가 호출된다. (memberA~C 까지 저장됨) // 플러시가 자동호출 되지 않으면, 위의 memberA~C까지의 데이터를 조회 할 수 없게 되기 때문. List<Member> members = query.getResultList();
- JPQL 쿼리 실행시 플러시가 자동으로 호출되는 이유
플러시 모드 옵션
그냥 오토로 써라~
정리 (중요)
- 영속성 컨텍스트를 비우지 않는다.
- 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화 하는 것이다.
- 트랜잭션이라는 작업 단위가 중요 → 커밋 직전에만 동기화 하면 됨.
'develop > JPA(ORM)' 카테고리의 다른 글
[JPA] 엔티티 매핑 (0) | 2022.12.22 |
---|---|
[JPA] 준영속 상태 (0) | 2022.12.22 |
[JPA]영속성 컨텍스트 (0) | 2022.12.22 |
Comments