저번 시간의 영속성 관리(4) - 엔티티 조회와 1차캐시를 충분히 이해하면 이 글을 읽는게 수월할 것이다.
저자 김영한의 자바 ORM 표준 JPA 프로그래밍📚을 참고했다.
이전 포스트에서 다뤘던 find() 메소드에서 같은 객체를 지정하여 호출했다면 여러번 호출하여도 영속성 컨텍스트는 1차캐시 내부에 있는 동일한 *인스턴스를 반환한다.
@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() 메소드를 사용해야한다.
영속성 관리(4) - 엔티티 조회와 1차캐시 (0) | 2022.05.26 |
---|---|
🤑영속성 관리(3) - 영속성 컨텍스트의 특징 (0) | 2022.05.14 |
🐲 영속성 관리(2) - 연속성 컨텍스트(Persistence Context) (0) | 2022.05.13 |
👨💼🏭영속성 관리(1) - EntityManager (앤티티 매니저) (0) | 2022.05.07 |
댓글 영역