본문 바로가기
JPA

JPA - 값 타입의 비교

by 왈레 2022. 5. 2.

값 타입: 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야한다.

int a = 10; 
int b = 10;
a == b // true

Address a = new Address(“서울시”) 
Address b = new Address(“서울시”)
a == b // false
  • 동일성(identity) 비교: 인스턴스의 참조 값을 비교, == 사용
  • 동등성(equivalence) 비교: 인스턴스의 값을 비교, equals() 사용
  • 값 타입은 a.equals(b)를 사용해서 동등성 비교를 해야 한다.
  • 값 타입의 equals() 메소드를 적절하게 재정의해주어야 한다. (주로 모든 필드 사용)

 

equals 메서드를 오버라이드 하지 않았을 경우

Address address1 = new Address("city", "street", 1000);
Address address2 = new Address("city", "street", 1000);

System.out.println(address1==address2) // false
System.out.println(address1.equals(address2)) // false

 

 

equals() 메소드를 적절하게 재정의 해줬을 경우

Address address1 = new Address("city", "street", 1000);
Address address2 = new Address("city", "street", 1000);

System.out.println(address1==address2) // false
System.out.println(address1.equals(address2)) // true

 

참고1 : euqals같은 메서드는 자동완성 기능을 사용하는게 바람직하다.

참고2 : 현업에서 값 타입을 비교할 일이 거의 없지만 equals 메서드를 오버라이드 하여 명확하게 해주는게 바람직하다.

 

※참고 : 인프런 김영한 JPA

'JPA' 카테고리의 다른 글

JPA - 값 타입과 불변 객체  (0) 2022.04.12
JPA - 기본값 타입과 임베디드 타입  (0) 2022.04.12
JPA - 영속성 전이(CASCADE)와 고아 객체  (2) 2022.04.11
JPA - 즉시 로딩과 지연 로딩  (0) 2022.04.11
JPA - 프록시  (0) 2022.04.11

댓글