상세 컨텐츠

본문 제목

🫠영속성 관리(5) - 엔티티 조회와 동일성 보장

영속성 관리

by 개발하는 정복자 2022. 5. 29. 00:20

본문

이전 챕터

 

저번 시간의 영속성 관리(4) - 엔티티 조회와 1차캐시를 충분히 이해하면 이 글을 읽는게 수월할 것이다.

 저자 김영한의 자바 ORM 표준 JPA 프로그래📚을 참고했다.

 

 

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

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

phillnam.tistory.com


동일성 보장이란?

이전 포스트에서 다뤘던 find() 메소드에서 같은 객체를 지정하여 호출했다면 여러번 호출하여도 영속성 컨텍스트는 1차캐시 내부에 있는 동일한 *인스턴스를 반환한다. 

 

CODE 🧑🏿‍💻!

@PersisContext
private EntityManager em;

//		   class      @Id(식별자 값)
Member m1 = em.find(Member.class, "member1");
Member m2 = em.find(Member.class, "member2");

// 동일성 비교
if(m1 == m2) System.out.println("True");
else System.out.println("False");

 

위 코드의 실행 결과는 "True" 일까 "False"일까?

정답은 Ture, 이유는 동일성 때문이다.

같은 값을 여러번 조회를 해도 영속성 컨텍스트는 1차캐시에서 같은 *인스턴스를 반환한다.

 


! 주의 ! 

인스턴스와 객체의 차이

 

동일성과 동등성

동일성(identity) : 실제 인스턴스가 같다. 참조 값을 비교하는 == 비교의 값이 같다.

동등성(equality) : 실제 인스턴스는 다를 수 있지만 인스턴스가 가지고 있는 값이 같다. 동등성 비교는 자바의 equals() 메소드를 사용해야한다.

 

 

 

관련글 더보기

댓글 영역