[JPA] @ElementCollection 사용 예Backend/Spring2022. 12. 5. 10:19
Table of Contents
반응형
RDB(Relational DataBase) 에는 Collection 형태의 데이터를 칼럼에 저장할 수 있는 방법이 없습니다. 그래서 별도의 테이블을 생성하고 Collection을 관리해야 합니다.
JPA의 @ElementCollection 사용하여 별도의 테이블을 생성하고 Collection을 관리할 수 있습니다.
ElementCollection 특징은 부모 Entity 에 의해 관리되고, 항상 부모와 함께 저장되고 삭제됩니다. casecade 옵션이 default입니다.
예
Collection 대상이 되는 객체는 @Entity
가 아닌 Embeddable Class로 생성하여 One-To-Many 관계를 맺습니다.
@Embeddable
@Data
public class Address {
@Column(length = 50)
public String address;
@Column(length = 50)
public String detailAddress;
}
@ElementCollection
생성하여 Collection 테이블을 생성합니다.
@Entity
@Data
public class User {
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(
name = "user_address",
joinColumns = @JoinColumn(name = "userId")
)
@ForeignKey(name = "fk_user_address")
private List<Address> addresses;
...
}
결과
다음과 같은 DDL 스크립트가 만들어집니다.
CREATE TABLE `user_address` (
`user_id` int(11) NOT NULL,
`address` varchar(50) DEFAULT NULL,
`detail_address` varchar(50) DEFAULT NULL,
KEY `fk_user_address` (`user_id`),
CONSTRAINT `fk_user_address` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
참고
반응형
'Backend > Spring' 카테고리의 다른 글
[JPA] NamedQuery (0) | 2022.12.09 |
---|---|
[JPA] 쿼리 메서드 (0) | 2022.12.08 |
[Spring] Swagger Header 설정 방법 (0) | 2022.10.12 |
[JPA] 복합키 사용 (0) | 2022.10.05 |
[JPA] Select Query 사용 방법 (0) | 2022.09.26 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!