ssung_항해일지/항해99_Spring_입문, 숙련, 심화
spring - 8일차
ssungcohol
2023. 2. 11. 01:48
JPA 심화
영속성 컨택스트 (= 엔티티 매니저)
- 엔티티를 영구적으로 저장하는 환경
- 어플리케이션 = DB에서 가져온 데이터 or 객체 보관
- 엔티티 매니저를 통해 엔티티를 조회, 저장 할 때 엔티티를 보관&관리
JAP 엔티티의 상태
- 비영속성 (New)
- 영속성 컨택스트와 전혀 관계 없음 (Java 객체 상태) - 영속 (Managed)
- 엔티티 매니저를 통해 엔티티가 영속성 컨택스트에 저장되어 관리되는 상태
- 이 경우 데이터의 생성, 변경 등을 JPA가 추적하면서 필요시 DB에 반영 - 준영속 (Detached)
- 영속성 컨택스트에서 관리되다 분리된 상태 - 삭제 (Removed)
- 영속성 컨택스트에서 삭제된 상태
1차 캐시
- 영속성 컨택스트 내부의 1차 저장소라고 생각
=> Db에 여러번 방문해야하는 작업 (find) 을 감소시켜 부하가 감소한다
쓰기 지연 SQL 저장소
- OMR 카드를 예로 적용하여 생각! (변기(INSERT) = OMR카드, 예비마킹 = SQL문들, 마킹&성적 = DB)
DirtyChecking
- 축구 경기를 예로 적용하여 생각! (1차 캐시 = 엔트리명단, 변기(UPDATE) = 심판(교체, VAR, 관중난입), DB = 선수단)
동일성 & 동등성
동일성
- 두 개의 객체가 같다는 의미, 주고 값이 같다는 것을 의미 ( == 으로 판별)
동등성
- 두 개의 객체가 같은 정보를 가지고 있음을 의미
- 변수가 참조하고 있는 객체의 주소가 다르더라도 내용만 같다면 동등 ( equals로 판별)
동일하면 동등하지만, 동등하면 동일하지는 않다!
(축구선수를 예로 적용
손흥민과 김민재 => 손흥민과 김민재는 축구선수로써 동등하지만, 손흥민과 김민재는 동일하지 않다)
728x90