상세 컨텐츠

본문 제목

영속성 컨텍스트의 엔티티 조회!!

JPA

by 코코코차 2024. 5. 27. 14:59

본문

728x90

> 1차 캐시 때문에 조회 성능이 좋아짐

 

 

엔티티 생성

Member member = new Member();

member.setId("member1");

member.setUsername("회원1");

 

엔티티를 영속

em.persist(member)

 

영속성 컨텍스트 내부에 Map이 하나 있는데 키는 @Id로 매핑한 식별자고 값은 엔티티 인스턴스임

 

이렇게 엔티티를 영속시키면 1차 캐시에 저장됨

1차 캐시 : 영속성 컨텍스트의 내부 캐시, 영속상태의 엔티티는 모두 이곳에 저장됨

1차 캐시의 키는 식별자 값이다. 그리고 식별자 값은 데이터베이스 기본키와 매핑되어 있다. 따라서 영속성 컨텍스트에 데이터를 저장하고 조회하는 모든 기본은 데이터베이스 기본 키 값

 

  • Member member = em.find(Member.class, "member1")
  • 엔티티를 조회(em.find())를 하면 먼저 1차 캐시에서 엔티티를 찾고
  • 만약 찾는 엔티티가 1차 캐시에 없으면 데이터베이스에서 조회
  • 그리고 데이터베이스에서 조회한 데이터로 엔티티를 생성해서 1차 캐시에 저장(영속 상태)

 

 > 영속 엔티티의 동일성 보장됨

  • 영속성 컨텍스트는 성능상 이점과 엔티티의 동일성을 보장
Memeber a = em.find(Member.class, "member1");
Memeber b = em.find(Member.class, "member1");

 

여기서 a == b 가 참이라는 말이다.

 

참고자료: 김영한. [자바 ORM표준 JPA 프로그래밍],2015

728x90
반응형

관련글 더보기