일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- JPA
- 수학
- 배포
- n과 m
- Spring Security
- 문자열
- 알고리즘
- 구현
- dfs
- springboot
- 백트래킹
- 소수 판정
- 재귀
- 프로그래머스
- DB
- 백준
- 깊이 우선 탐색
- Vue
- 정수론
- 너비 우선 탐색
- 자료 구조
- 그래프 탐색
- 프로젝트
- 브루트포스 알고리즘
- 스택
- 다이나믹 프로그래밍
- 정보처리기사
- MYSQL
- 그래프 이론
- SWEA
Archives
- Today
- Total
영원히 남는 기록, 재밌게 쓰자
영속성 컨텍스트의 플러시(flush)에 대해서 본문
728x90
반응형
플러시가 발생한다고 해서 트랜잭션이 커밋되는 것은 아니다. 플러시로 보낸 다음 tx.commit()과 같이 트랜잭션 커밋을 따로 해줘야 한다.
flush()를 직접 호출할 일은 잘 없긴하다. flush()를 하는 경우를 보면
- em.flush()와 같이 직접 플러시를 호출
- 트랜잭션의 commit 호출 시 자동 플러시 호출
- JPQL 쿼리 실행 시 플러시가 자동 호출
플러시가 발생한다고 1차 캐시가 비워지는가?
아니다 플러시가 발생한 경우 변경 감지를 하여 변경이 되었거나 조회, 삭제 등으로 쓰기 지연 SQL 저장소에 쌓여있던 SQL 들이 실행되어 데이터 베이스에 반영이 되는 과정이다. 그래서 1차 캐시를 비우지 않는다.
- 플러시는 영속성 컨텍스트를 비우는 작업이 아니다.
- 영속성 컨텍스트의 변경 내용을 데이터 베이스에 동기화하는 과정이다.
- 플러시는 트랜잭션이란 작업 단위가 중요하다 → 커밋 직전만 동기화를 하면 된다. (커밋을 통해 DB에 반영시켜야 하기 때문)
JPA 동시성에 관한 것은 DB 트랜잭션에 위임해서 동작하기 때문에 이런 것들이 가능하다!!!
728x90
반응형
'springboot > JPA' 카테고리의 다른 글
API 개발 공부 - 지연 로딩과 조회 성능 최적화에 대해서 (0) | 2024.05.26 |
---|---|
queryDSL을 사용해서 페이징 처리 해보기 (0) | 2024.04.20 |
프록시 (0) | 2024.02.27 |
다대일(N:1) 연관 관계에서 양방향 단방향 매핑과 연관 관계의 주인에 대해서 알아보자. (2) | 2024.02.24 |
영속성 컨텍스트 (0) | 2024.02.20 |