본문 바로가기

AttributeOverrides3

JPA - 값 타입 - 값 타입 컬렉션 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 값 타입 컬렉션 회원에서 좋아하는 음식들과 주소 내역들을 참조하고 있다고 하면 이런 값 타입을 2 개 이상 저장하기 위해서는 컬렉션에 보관해야 한다. JPA 에서는 값 타입 컬렉션을 맵핑할 수 있는 @ElementCollection 과 @CollectionTable 어노테이션을 제공한다. @Entity public class Member { @Id @Column(name = "USER_ID") private String id; @ElementCollection @CollectionTable(name = "FAVORITE_FOODS", joinColumns = @JoinColumn(name = "USER_ID")) @Column(name = "FOOD_NA.. 2021. 7. 25.
JPA - 값 타입 - 임베디드 타입 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 값 타입 JPA 의 데이터 타입을 분류하면 엔티티 타입과 값 타입이 있다. 엔티티 타입은 @Entity 어노테이션으로 정의했던 객체들이고, 값 타입은 int, String 등 기본 타입이나 값으로 사용하는 객체를 말한다. 엔티티는 식별자가 있다. 우리는 어떤 사람이 자라면서 키나 몸무게가 달라진다고해서 그 사람을 다른사람이라고 인식하지 않는다. 반면 값은 100 에서 200 으로 변하면 완전히 다른 값이 된다. 이는 DDD에서 Value Object 와 Entity 를 구분하는 내용에도 등장하는 개념이므로 헷갈린다면 이번 기회에 이해해두도록 하자. - 기본값 타입 @Entity public class Member extends DateMarkable{ @.. 2021. 7. 20.
JPA - 고급맵핑 - MappedSuperclass - 참조: 자바 ORM 표준 JPA 프로그래밍 - @MappedSuperclass 앞에서 살펴본 슈퍼타입과 서브타입에서는 부모 클래스와 자식 클래스를 모두 테이블과 맵핑했다. @MappedSuperclass 를 이용하면 부모 클래스는 테이블과 맵핑하지 않고, 상속 받는 자식 클래스에게 맵핑 정보만 제공할 수 있다. 즉 @Entity 는 실제 테이블과 맵핑되지만 @MappedSuperclass 는 실제 테이블과 맵핑되지 않는다. 위와 같이 MEMBER 와 SELLER 테이블이 있지만, MEMBER 와 SELLER 는 비즈니스적인 관계가 없다고 가정하자. 관계는 없지만 ID 와 NAME 을 공통된 속성으로 사용하고 싶을 때가 있다. 이를 UML 로 표현해보면 위와 같이 된다. BaseEntity 에 id, .. 2021. 7. 10.