BE전문가 프로젝트
값 타입의 비교 본문
값 타입
- 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야 함
값 타입의 비교
- 동일성(identity) 비교: 인스턴스의 참조 값을 비교, == 사용
- 동등성(equivalence) 비교: 인스턴스의 값을 비교, equals()사용
- 값 타입은 a.equals(b)를 사용해서 동등성 비교를 해야함
- 값 타입의 equals() 메소드를 적절하게 재정의(주로 모든 필드 사용)
@Embeddable
@NoArgsConstructor
public class Address {
private String city;
private String street;
private String zipcode;
public Address(String city, String street, String zipcode) {
this.city = city;
this.street = street;
this.zipcode = zipcode;
}
public String getCity() {
return city;
}
public String getStreet() {
return street;
}
public String getZipcode() {
return zipcode;
}
@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);
}
}
기본으로 정의해주는 equals를 생성해주는 것이 좋다
'JPA' 카테고리의 다른 글
객체지향 쿼리 언어 (0) | 2022.11.06 |
---|---|
값 타입 컬렉션 (0) | 2022.11.02 |
값 타입과 불변 객체 (0) | 2022.11.02 |
임베디드 타입(복합 값 타입) (0) | 2022.11.01 |
기본값 타입 (0) | 2022.11.01 |
Comments