ssung_항해일지/항해99_Spring_입문, 숙련, 심화

spring - 8일차

ssungcohol 2023. 2. 11. 01:48

JPA 심화

 

영속성 컨택스트 (= 엔티티 매니저)

  • 엔티티를 영구적으로 저장하는 환경
  • 어플리케이션 = DB에서 가져온 데이터 or 객체 보관
  • 엔티티 매니저를 통해 엔티티를 조회, 저장 할 때 엔티티를 보관&관리

JAP 엔티티의 상태

  • 비영속성 (New)
     - 영속성 컨택스트와 전혀 관계 없음 (Java 객체 상태)
  • 영속 (Managed)
     - 엔티티 매니저를 통해 엔티티가 영속성 컨택스트에 저장되어 관리되는 상태
     - 이 경우 데이터의 생성, 변경 등을 JPA가 추적하면서 필요시 DB에 반영
  • 준영속 (Detached)
     - 영속성 컨택스트에서 관리되다 분리된 상태
  • 삭제 (Removed)
     - 영속성 컨택스트에서 삭제된 상태

1차 캐시

출처 자바 ORM 표준 JPA - https://product.kyobobook.co.kr/detail/S000000935744

 

 - 영속성 컨택스트 내부의 1차 저장소라고 생각

 => Db에 여러번 방문해야하는 작업 (find) 을 감소시켜 부하가 감소한다

 

쓰기 지연 SQL 저장소

 

출처 자바 ORM 표준 JPA - https://product.kyobobook.co.kr/detail/S000000935744

 - OMR 카드를 예로 적용하여 생각! (변기(INSERT) = OMR카드, 예비마킹 = SQL문들, 마킹&성적 = DB)

 

DirtyChecking

출처 자바 ORM 표준 JPA

 - 축구 경기를 예로 적용하여 생각! (1차 캐시 = 엔트리명단, 변기(UPDATE) = 심판(교체, VAR, 관중난입), DB = 선수단)


동일성 & 동등성

동일성

 - 두 개의 객체가 같다는 의미, 주고 값이 같다는 것을 의미 ( == 으로 판별)

동등성

 - 두 개의 객체가 같은 정보를 가지고 있음을 의미

 - 변수가 참조하고 있는 객체의 주소가 다르더라도 내용만 같다면 동등 ( equals로 판별)

 

동일하면 동등하지만, 동등하면 동일하지는 않다!

(축구선수를 예로 적용

손흥민과 김민재 => 손흥민과 김민재는 축구선수로써 동등하지만, 손흥민과 김민재는 동일하지 않다)

728x90

'ssung_항해일지 > 항해99_Spring_입문, 숙련, 심화' 카테고리의 다른 글

spring - 10일차  (0) 2023.02.14
Spring - 9일차  (0) 2023.02.11
spring - 7일차 (JPA)  (0) 2023.02.10
spring - 6일차  (0) 2023.02.09
spring - 5일차  (0) 2023.02.08