JPA

[JPA] @Embedded @Embeddable 이란? 예제

Jeong Jeon
반응형

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 는 생략 가능하다고 한다.

 

결과 적으로 아래 사진과 같이 컬럼들이 잘 생긴걸 확인 할 수 있다.

반응형