[Spring Boot] JPA 강의 정리-23 (값 타입-비교)

Posted by 김성철

SpringBoot - JPA 강의 정리-23(값 타입 - 비교)

값 타입의 비교

- 값 타입 : 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야함  
=====================================================================  
int a = 10;  
int b = 10;  
a==b // true  
  
Address address1 = new Addres("용인시");  
Address address2 = new Addres("용인시");  
address1==address2 // false  
  
=====================================================================  
  
- 동일성(identity)비교 : 인스턴스의 참조 값을 비교, == 사용  
- 동등성(equivalence) 비교 :  인스턴스의 값을 비교, equals() 사용  
- 값 타입은 a.equals(b)를 사용해서 동등성 비교를 해야 함  
- 값 타입은 equals() 메소드를 적절하게 재정의(주로 모든 필드를 사용)  

equals 재정의

equals 재정의는 IDE 툴에서 제공해주는 기능을 사용하되, getter를 사용해서 재정의 하도록함.  
객체에 직접 접근하면 proxy일때 오류가 발생할 수 있음  
JPA에서는 메서드를 통해서 하도록 해야함(대부분의 코드를 getter를 사용해야함)