티스토리 뷰
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 생성자로 생성하여 사용하도록 하자
'etc > TIL' 카테고리의 다른 글
스프링부트에서 빈 배열만 출력될 때 해결 방법 (0) | 2022.04.28 |
---|---|
@PreAuthorize()로 메서드를 실행하기 전에 권한 검사를 하자 (0) | 2022.04.26 |
@SQLDelete를 통해 삭제했지만 삭제하지 않는 soft deletion을 구현하자 (0) | 2022.04.26 |
필드에 생성된 Repository와 Service를 private final로 생성하는 이유 (0) | 2022.04.26 |
@AllArgsConstructor와 @Setter는 최대한 지양하자 (0) | 2022.04.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 레디스
- RequestParam
- neovim
- 루나빔
- 아키텍처
- lunarvim
- JavaScript
- 배포
- 도커
- RequestBody
- IDE
- Dap
- vim
- ModelAttribute
- RequestPart
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함