값 타입

2022. 2. 2. 16:37
반응형

JPA의 데이터 타입 분류

  • 엔티티 타입
    • @Entity로 정의하는 객체
    • 데이터가 변해도 식별자로 지속해서 추적 가능하다.
    • 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식이 가능하다.
  • 값 타입
    • int Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체
    • 식별자가 없고 값만 있으므로 변경시 추적이 불가능하다.

값 타입 분류

  • 기본값 타입
    • 자바 기본 타입(int, double)
    • 래퍼 클래스(Integer, Long)
    • String
  • 임베디드 타입(embedded type, 복합 값 타입)
  • 컬렉션 값 타입(collection value type)

기본값 타입

  • String name, int age
  • 생명주기를 엔티티에 의존한다.
    • 회원을 삭제하면 이름, 나이 필드도 함께 삭제된다.
  • 값 타입은 공유하면 안된다.
    • 회원 이름 변경시 다른 회원의 이름도 함께 변경되면 안된다.
    • 기본값 타입은 항상 값을 복사하기 때문이다.

임베디드 타입

  • 새로운 값 타입을 직접 정의할 수 있다.
  • 주로 기본 값 타입을 모아서 만들기 때문에 복합 값 타입이라고 한다.
  • int, String 과 같은 값 타입 이다.

값 타입 공유 참조

  • 임베디드 타입 같은 값 타입을 여러 엔티티에서 공유하면 위험하다. -> 부작용이 발생한다.
  • 같은 값 타입을 공유하고 값이 변경되면 두개의 엔티티에서 동일하게 값 타입이 변경되기 때문에 부작용 발생!
  • 따라서 값을 복사해서 사용해야한다.

불변 객체

  • 객체 타입을 수정할 수 없게 만들면 부작용을 원천 차단할 수 있다.
  • 값 타입은 불변 객체로 설계해야 한다.
  • 불변 객체란 생성 시점 이후에 절대 값을 변경할 수 없는 객체를 의미한다.

 

반응형

'JPA' 카테고리의 다른 글

JPA 영속성 컨텍스트 - 1차캐시와 변경감지  (0) 2022.05.31
연관관계 매핑 종류  (0) 2022.05.21
프록시와 연관관계 관리  (0) 2022.02.02
상속관계 매핑과 @MappedSuperclass  (0) 2022.01.31
연관관계 매핑  (0) 2022.01.25

BELATED ARTICLES

more