상세 컨텐츠

본문 제목

영속성 관리(4) - 엔티티 조회와 1차캐시

영속성 관리

by 개발하는 정복자 2022. 5. 26. 19:05

본문

이전 챕터

 

저번 시간의 🤑영속성 관리(3) - 영속성 컨텍스트의 특징 를 충분히 이해하면 이 글을 읽는게 수월할 것이다.저자 김영한의 자바 ORM 표준 JPA 프로그래 📚을 참고했다.

 

 


 

🗄1차 캐시!

영속성 컨텍스트 내부에 있는 캐시다. 영속 상태의 엔티티라면 모두 1차 캐시에 저장된다. 

1차 캐시는 내부에 @Id로 매핑하는 식별자와 값으로 하는 Map이 내부에 있다.

 

🧑🏿‍💻 CODE

@PersistenceContext	// 스프링이 처음 시작할 때, entity manager를 만들어서 빈으로 등록을 해줌
private EntityManager em;

// 엔티티 생성 (비영속)
Member member = new Member();
member.setId("member");
member.setName("회원");

// 엔티티 영속하기, 1차 캐시에 저장됨
em.persist(member);

 

 

 

위와 같이 엔티티를 영속하는 순간 영속성 컨텍스트 내부의 1차캐시에 @Id는 식별자로 앤티티는 값으로 저장된다. 저장과 조회의 기준은 데이터베이스 기본 키 값이다.

 

 

 

 

 

Entity 조회하기

		   // 엔티티 클레스 타입,  식별자 값	
Member member = em.find(Member.class, "member"); // 1차 캐시에서 조회

 

em.find() 순서

  1. em.find() 호출
  2. 식별자 값으로 1차 캐시 확인
  3. 1차 캐시에 없으면 DB 조회
  4. DB에 있으면 1차 캐시에 저장 (영속상태)
  5. 조회한 영속 상태의 Entity 반환

 

쓰는 이유

간단 명료하게. 엔티티를 조회하면 메모리에 있는 1차 캐시에서 바로 불러온다. 따라서 성능상 이점을 누릴 수 있다.

 

 

관련글 더보기

댓글 영역