개발강의정리/Spring

[스프링 데이터 JPA] 2-4. JPA 프로그래밍 3: Value 타입 맵핑

nineDeveloper 2019. 11. 22.
728x90

스프링 데이터 JPA

2. 핵심 개념 이해

본격적인 스프링 데이터 JPA 활용법을 학습하기에 앞서, ORM과 JPA에 대한 이론적인 배경을 학습합니다

포스팅 참조 정보

GitHub

공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다

해당 포스팅에 대한 내용의 GitHub 주소

실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다

https://github.com/freespringlecture/spring-data-jpa-study/tree/chap02-04-03_value_type

해당 포스팅 참고 인프런 강의

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-jpa/dashboard

실습 환경

  • Java Version: Java 11
  • SpringBoot Version: 2.1.2.RELEASE

4. JPA 프로그래밍 3: Value 타입 맵핑

엔티티 타입과 Value 타입 구분

  • 식별자가 있어야 하는가
  • 독립적으로 존재해야 하는가

Value 타입 종류

다른 타입에 종속적인 타입을 Value 타입이라고 보면 됨

  • 기본 타입 (String, Date, Boolean, ...)
  • Composite Value 타입
  • Collection Value 타입
    • 기본 타입의 콜렉션
    • 컴포짓 타입의 콜렉션

Composite Value 타입 맵핑

  • @Embadable: Composite Value 클래스에 지정하면 해당 클래스를 Composite Value로 만듬
  • @Embadded: Entity에서 Composite Value로 지정한 클래스를 불러와 정의할 때 사용
  • @AttributeOverrides: 여러 값을 오버라이딩 하기위한 그룹 어노테이션
  • @AttributeOverride: 오버라이딩 하기 위해 사용
@Embeddable
public class Address {
    private String street;
    private String city;
    private String state;
    private String zipCode;
}
// Account
@Embedded
@AttributeOverrides({
    @AttributeOverride(name = "street", column = @Column(name = "home_street"))
})
private Address address;
728x90

댓글

💲 추천 글