영속성 컨텍스트
JPA에서 가장 중요한 두가지
- ORM
- 영속성 컨텍스트
엔티티 매니저 팩토리와 엔티티 매니저
emf는 em을 생성하고
em은 커넥션을 사용해서 db를 사용함
영속성 컨텍스트:
엔티티를 영구 저장하는 환경
엔티티의 생명주기:
비영속, 영속, 준영속, 삭제
비영속: 영속성 컨텍스트와 관계가 없음
영속: 영속성 컨텍스트에 관리되는 상태
준영속: 영속성 컨텍스트에 저장되어있다가 분리된 상태
삭제: 삭제된 상태
- 영속상태가 된다고 해서 바로 db에 쿼리기 가는게 아님
- 트렌젝션을 commit 할 때 감.
영속성 컨텍스트
내부에 1차 캐시가 있음
- 1차 캐시의 이점: 조회시에 db를 조회하기 전, 1차 캐시를 먼저 조회하고 값이 있을 시, 반환이 빨라짐.
- But 한 트렌젝션 안에서만 존재할 수 있으므로, 실제로 성능 이점을 크게 얻는다고 말할 수는 없음.
영속 엔티티는 동일성을 보장해준다.
(==으로 비교했을 때, true가 나옴) -> 1차 캐시로 반복 가능한 읽기 등급의 트랜잭션 격리 수준을 애플리케이션 차원에서 제공
persist를 하면 바로 쿼리로 쏘는게 아니라, 쓰기 지연 SQL 저장소 및 1차 캐시에 저장됨.
그리고 SQL 저장소에 모아둔 것은 트렌젝션 커밋을 할 때 보내짐.
더티 채킹: 변경감지
영속 컨텍스트가 있어서 가능.
커밋을 하면 flush()가 호출
호출 된 후 엔티티와 스냅샷을 비교
'Web BackEnd > TIL Memo' 카테고리의 다른 글
220326 TIL Memo Java Entity Mapping (0) | 2022.03.26 |
---|---|
220320 TIL 플러시, 준영속 상태 (0) | 2022.03.21 |
220317 TIL 메모 JPA Entity (0) | 2022.03.18 |
좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2022.01.09 |
이너 클래스와 이너 인터페이스 (0) | 2022.01.05 |