사용자의 요청으로부터 DB에 반영되기까지의 과정이다.
- 사용자가 요청을 보낸다.
- 쓰레드에 비 영속상태의 new Entity가 생성된다.
- 쓰레드에서 persist를 날리면 1차 캐시로 이동한다.
- 1차 캐시(영속성 컨텍스트)에서 Entity가 생성된다.
- 1차 캐시에서 flush를 날리면 DB 트랜잭션으로 이동한다.
- DB 트랜잭션에서 쿼리가 등록된다.
- DB 트랜잭션에서 commit을 날리면 DB 원본으로 이동한다.
- DB 원본에서 commit에 대한 작업을 마치면 저장된다.
이동하는 순서는
- 요청 → 쓰레드 → 1차 캐시 → DB 트랜잭션 → DB 원본
이다.
- 1차 캐시에서 detached가 되면 다시 쓰레드로 돌아간다.
- 1차 캐시에는 쓰기 지연 저장소가 있어 쿼리문들이 모여있다.
- DB 트랜잭션에서 commit을 해야 DB에 실제로 반영된다.