1.기본값 타입
JPA의 데이터 타입 분류
1.엔티티 타입 (최상위)
-@Entity 로 정의하는 객체
-데이터가 변해도 식별자로 지속해서 추적가능
-ex) 회원 엔티티의 키나 나이값을 변경해도 식별자로 인식가능
(값을 변경하더라고 식별자(PK)만 멀쩡하면 추적가능)
값타입(최상위)
-int ,Integer , String 처럼 단순히 값으로 사용하는 자바 기본타입이나 객체
-식별자가 없고 값만 있으므로 변경시 추적 불가
ex) 숫자 100을 200으로 변경하면 완전히 다른값으로 대체
(식별자가 없는 순수값이라서 변경되면 추적이 불가능하다)
(단순 하드코딩 값,)
-------------------------------------------------
값분류는 크게 3가지
기본값 타입
-자바 기본 타입 (int , double)
-래퍼 클래스 (integer , long)
-String
임베디드 타입 (embeddedType , 복잡한 값 타입)
(좌표 , 우편번호 등 특수한 형태의 값 타입)
컬렉션 값 타입 (Collection Value Type)
(엠베디드 형태의 객체를 받아서 형성하는 값타입)
기본 값 타입
ex) String name , int age
생명 주기를 엔티티에 의존
ex) 회원(엔티티)를 삭제하면 이름, 나이 필드도 함께 삭제
(엔티티에 붙어있는 필드를 형성하는 값타입)
값 타입은 공유하면 안된다.
ex) 회원 이름 변경시 다른 회원이 이름도 함께 변경되어선 안된다.
참고 , 자바의 기본타입 데이터는 절대 공유될 수 없다.
-int , double 같은 기본타입(primary type)는 절대 공유되지 않는다.
-기본 타입은 항상 값을 복사한다.
-Integer 같은 래퍼 클래스나 String 같은 특수한 클래스는 공유 가능한 "객체"지만 변경되지는 않는다.
(기본값 과 레퍼런스 값 타입의 차이 , 주소값과 그렇지않은값)
int a = 10;
int b = a
a = 20
일 때 a를 20으로 변경한다 해도 b에 저장된 a의 값이 변경되지는 않는다.
b는 a란값을 저장한 시점에서 a와는 관련이없는 개별적인 값이 된다.
그런데
Integer a = new Integer(10);
Interger b = a;
이 경우는 객체b가 객체a의 레퍼런스주소값을 넘겨받는것이기 떄문에 a에 값이 변경되면 b도 변경된다,
값이 공유되니 변경시 문제(사이드 임팩트)가 발생할 수 있지만 이 값은 변경할 방법이 없다.
'JPA' 카테고리의 다른 글
2월 2일 JPA cascade 의 종류 (0) | 2023.02.03 |
---|---|
2월 3일 JPA 임베디드 타입 (0) | 2023.02.03 |
2월 3일 JPA 실전예제 5.연관관계 관리 (0) | 2023.02.03 |
2월 2일 JPA 영속성 전이 CASCADE (0) | 2023.02.02 |
2월 2일 JPA 즉시로딩과 지연로딩 (0) | 2023.02.02 |