반응형
JPA에서는 Entity 내부의 값을 더 응집시켜 객체로 데이터를 표현한다.
JPA를 사용하면서 자주 보게되는 @Embedded와 @Embeddable 어노테이션을 한번 살펴보자.
회원가입을 생각하여 간단한 코드로 확인해보도록 하자.
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="user_id")
private Long id;
private String name;
private String phoneNum;
private String zipCode;
private String address;
private String addressDetail;
}
위 Entity를 보면 User의 정보중 [주소]를 표현하는 컬럼들이 있다.
[주소] 라는 객체로 묶어서 관리하면 조금더 깔끔하지 않을까? 라는 생각을 할때 사용하는 Annotation이 오늘 볼 @Embedded와 @Embeddable 어노테이션이다.
그렇다면 어떻게 변화되는지 확인해보자.
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="user_id")
private Long id;
private String name;
private String phoneNum;
@Embedded
private Address address;
}
@Embeddable
public class Address {
private String zipCode;
private String address;
private String addressDetail;
}
클래스를 나누어 각각 해당 어노테이션을 붙여주면 되는데, @Embedded 는 생략 가능하다고 한다.
결과 적으로 아래 사진과 같이 컬럼들이 잘 생긴걸 확인 할 수 있다.
반응형
'JPA' 카테고리의 다른 글
[JPA] Fetch Join 이란? N+1 이란? fetch join을 사용하는 이유 (0) | 2021.08.23 |
---|---|
[JPA] 상속관계 매핑 전략이란? @Inheritance, @DiscriminatorColumn이란? (0) | 2021.08.18 |
[JPA] No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer 오류 (0) | 2021.08.11 |
[JPA] 관계 매핑 기초 정리 (0) | 2021.07.23 |
[JPA] SpringBoot + JPA @EnableJpaAuditing 이란? (0) | 2021.07.23 |