Programming/Java

[JPA] 값 타입(Value Type)

2024. 2. 27. 10:58
목차
  1. Value Type
  2. 기본값 타입
  3. 임베디드 타입
  4. 값 타입 컬렉션

값 타입은 JPA 강의를 보면서 엔티티를 정의할 때 Value Type이 명시 되어 있어서 자세히 알아보고자 정리하게 되었다.

 

Value Type

값 타입은 자바에서 다루는 원시 타입(Primitive Type)으로 int, Integer, String 등을 의미한다.

값 타입은 3가지로 나눌 수 있다.

  • 기본값 타입(basic value type)
    String, int, Integer 등 자바에서 제공하는 원시 타입 및 래퍼 클래스 타입

  • 임베디드 타입(embedded type)
    JPA에서 사용자가 직접 정의한 값 타입

  • 컬렉션 값 타입(collection value type)
    하나 이상의 값 타입을 저장할 때 사용

 

기본값 타입

@Entity
public class Member {

	@Id
    // ... (생략)
    
    private String state;
    private String city;
    private String zipCode;
}

값 타입은 엔티티에 의존하므로 다른 곳에 공유해선 안 된다.
다른 엔티티에서 Member 엔티티에서 city 값을 변경할 수 있으면 추적이 힘들어진다는 단점이 있다.

 

임베디드 타입

JPA에서 새로운 값 타입을 직접 정의해서 사용하는 것을 의미한다.

@Entity
public class Member {

	@Id
    // ... (생략)
    
    @Embedded
    private Address address;
}

@Getter
@Embeddable
@NoArgsConstructor
@AllArgsConstructor
public class Address {
    private String state;
    private String city;
    private String zipCode;
}

임베디드 타입 정의는 어노테이션으로 하였고, 하나의 클래스에 모두 적용할 필요 없는 한 곳에만 정의해도 문제없다. 예를 들어, Member 클래스에 있는 private Address address;에 어노테이션만 추가해도 정상 동작한다.

모든 값들을 기본값 타입으로 선언에 대해 생각할 수 있는데, 그렇게 되면 알아보기 힘들고 객체애 대한 응집도가 떨어진다. 관련도니 기본값 타입을 클래스로 묶어 임베디드 타입으로 선언하게 되면 코드가 좀 더 명확해지는 장점이 있다.

 

값 타입 컬렉션

값 타입 하나 이상을 저장하기 위해 값 타입 컬렉션을 사용한다.

 

 

 

 

ref)

 

엔티티(Entity)와 값 타입(Value Type)

JPA의 데이터 타입을 가장 크게 분류하면 엔티티(Entity) 타입과 값(Value) 타입으로 나눌 수 있다. 엔티티 타입은 @Entity로 정의하는 객체이고, 값 타입은 int, Integer, String처럼 단순히 값으로 사용하는

devbksheen.tistory.com

 

저작자표시 (새창열림)

'Programming > Java' 카테고리의 다른 글

[JAVA] 메모리 누수 확인 도구  (0) 2024.12.29
[JPA] 영속성 컨텍스트(Persistence Context)  (0) 2024.03.11
[JPA] 패러다임 불일치 - 우린 달라 달라  (0) 2024.02.19
[JPA] JPA 시작 - SQL 잘 작성하는 개발자  (0) 2024.02.17
[Java] 패키지 구조  (0) 2023.12.20
  1. Value Type
  2. 기본값 타입
  3. 임베디드 타입
  4. 값 타입 컬렉션
'Programming/Java' 카테고리의 다른 글
  • [JAVA] 메모리 누수 확인 도구
  • [JPA] 영속성 컨텍스트(Persistence Context)
  • [JPA] 패러다임 불일치 - 우린 달라 달라
  • [JPA] JPA 시작 - SQL 잘 작성하는 개발자
seandoesdev
seandoesdev
seandoesdev
To get a Lemonade
seandoesdev
전체
오늘
어제
  • 분류 전체보기 (84)
    • My Lemonade (0)
    • Programming (2)
      • C (0)
      • Java (18)
      • Spring | Spring-Boot (13)
      • Python (2)
      • HTML CSS JS (4)
    • Algorithm (8)
    • Git & Github (2)
    • Network (0)
    • Database (9)
      • Oracle (7)
      • MySQL (0)
      • PostgreSQL (0)
    • AI Development (0)
    • Draw my Life (5)
      • Book Review (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Seandoesdev Blog

인기 글

태그

  • 데이터베이스
  • 단일행
  • Java
  • JavaScript
  • Spring
  • dynamic page
  • 오라클
  • JPA
  • apachectl
  • 도메인구조
  • Apache
  • project-euler
  • oracle
  • 단일행함수
  • Database
  • 패키지구조
  • MWAD
  • Linux
  • 함수
  • DI

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.1.4
seandoesdev
[JPA] 값 타입(Value Type)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.