값 타입 : 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야 함
int a = 10;
int b = 20;
public class ValudMain{
public static void main(String args){
int a = 10;
int b = 10;
System.out.println("a == b " + (a == b));
Address address1 = new Address ("city", "street", "10000");
Address address1 = new Address ("city", "street", "10000");
System.out.println("address1 == address2 : " + (address1== address2));
}
}
위에 결과는 알아서 실행하면...
첫번째는 true / 두번째는false가 나온다!
값 타입의 비교는...
- 동일성 비교 : 인스턴스의 참조 값을 비교, == 사용
- 동등성 비교 : 인스턴스의 값을 비교, equals()사용
- 값 타입은 a.equals(b)를 사용해서 동등성 비교해야 함
- 값 타입의 equals()메소드를 적절하게 재정의(주로 모든 필드 재정의)
값 타입 컬렉션
값 타입 컬렉션
- 값 타입을 하나 이상 저장할 때 사용
- @ElementCollection, @CollectionTable사용
- 데이터베이스는 컬렉션을 같은 테이블에 저장할 수 없다.
- 컬렉션을 저장하기 위한 별도의 테이블이 필요함
값 타입 컬렉션의 제약사항
- 값 타입은 엔티티와 다르게 식별자 개념이 없다.
- 값은 변경하면 추적이 어렵다.
- 값 타입 컬렉션에 변경 사항이 발생하면, 주인 엔티티와 연관된 모든 데이터를 삭제하고, 값 타입 컬렉션에 있는 현재 값을 모두 다시 저장한다(치명적인 결점)
- 값 타입 컬렉션을 매핑하는 테이블은 모든 컬럼을 묶어서 기본키를 구성해야 함 : null 입력 x, 중복 저장 x
'Spring' 카테고리의 다른 글
14. 기본 문법과 쿼리 API (0) | 2021.07.24 |
---|---|
13. 객체지향 쿼리 언어(JPQL) (0) | 2021.07.24 |
11. 값 타입과 불변 객체~ (0) | 2021.07.21 |
11. 스프링 / 영속성 전이 (0) | 2021.07.20 |
10. 스프링 / 실전예제 4. 상속관계 매핑 (0) | 2021.07.20 |