값 타입
• 값 타입: 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐 야 함
• 예)
int a = 10;
int b = 10;
Address a = new Address(“서울시”)
Address b = new Address(“서울시”)
값 타입의 비교
• 동일성(identity) 비교: 인스턴스의 참조 값을 비교, == 사용
• 동등성(equivalence) 비교: 인스턴스의 값을 비교, equals() 사용
• 값 타입은 a.equals(b)를 사용해서 동등성 비교를 해야 함
• 값 타입의 equals() 메소드를 적절하게 재정의(주로 모든 필드 사용)
- 재정의
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Address address = (Address) o;
return Objects.equals(city, address.city)
&& Objects.equals(street, address.street)
&& Objects.equals(zipCode, address.zipCode);
}
@Override
public int hashCode() {
return Objects.hash(city, street, zipCode);
}
- 비교
Address address = new Address("city","street","10000");
Address address2 = new Address("city","street","10000");
// test for equality
System.out.println("address == address2: " + (address.equals(address2)));
'JAVA > JPA' 카테고리의 다른 글
(JPA) JPQL (0) | 2021.07.08 |
---|---|
(JPA) 값 타입 컬렉션 (0) | 2021.07.06 |
(JPA) 값 타입과 불변객체 (0) | 2021.07.06 |
(JPA) 기본값과 임베디드 타입 (0) | 2021.07.06 |
(JPA) 영속성 전이, 고아 객체 (0) | 2021.07.06 |