Spring

12. 값 타입의 비교 ~

공대키메라 2021. 7. 22. 23:12

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

 

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()메소드를 적절하게 재정의(주로 모든 필드 재정의)

 

값 타입 컬렉션

 

값 타입 컬렉션

 

  1. 값 타입을 하나 이상 저장할 때 사용
  2. @ElementCollection, @CollectionTable사용
  3. 데이터베이스는 컬렉션을 같은 테이블에 저장할 수 없다. 
  4. 컬렉션을 저장하기 위한 별도의 테이블이 필요함

 값 타입 컬렉션의 제약사항

 

  1. 값 타입은 엔티티와 다르게 식별자 개념이 없다.
  2. 값은 변경하면 추적이 어렵다.
  3. 값 타입 컬렉션에 변경 사항이 발생하면, 주인 엔티티와 연관된 모든 데이터를 삭제하고, 값 타입 컬렉션에 있는 현재 값을 모두 다시 저장한다(치명적인 결점)
  4. 값 타입 컬렉션을 매핑하는 테이블은 모든 컬럼을 묶어서 기본키를 구성해야 함 : 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