티스토리 뷰

728x90

JPA에서는 @Embeddable 애너테이션을 이용하여 해당 클래스가 다른 Entity에 의해 프로퍼티 값으로 들어갈 수 있음(embedded)을 의미한다.

 

public class Company {

    private Integer id;

    private String name;

    private String address;

    private String phone;

    private String contactFirstName;

    private String contactLastName;

    private String contactPhone;

    // standard getters, setters
}

회사라는 클래스에 있는 평범한 프로퍼티들이지만 연락할 수 있는 인원에 대한 정보는 따로 빼는 것이 좋아 보일때

@Embeddable
public class ContactPerson {

    private String firstName;

    private String lastName;

    private String phone;

    // standard getters, setters
}

와 같이 따로 꺼내어 클래스로 정의해주고

 

@Entity
public class Company {

    @Id
    @GeneratedValue
    private Integer id;

    private String name;

    private String address;

    private String phone;

    @Embedded
    private ContactPerson contactPerson;

    // standard getters, setters
}

처럼 해당 클래스가 다른 클래스를 embed하고 있음을 나타내어 사용한다

 

@Embedded
@AttributeOverrides({
  @AttributeOverride( name = "firstName", column = @Column(name = "contact_first_name")),
  @AttributeOverride( name = "lastName", column = @Column(name = "contact_last_name")),
  @AttributeOverride( name = "phone", column = @Column(name = "contact_phone"))
})
private ContactPerson contactPerson;

@AttriuteOverrides를 이용하여 JPA가 자동 생성 규칙에 따라 짓는 이름을 원하는 이름으로 매핑하여 사용할 수 있다.

 

 

    @Embedded
    private ContactPerson contactPerson = new ContactPerson();

마지막으로 사용할 때에는 항상 new 생성자로 생성하여 사용하도록 하자

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함