25/01/09(목)
단순하며 완전 종속적이라 함께 저장되거나 삭제되는 상황에서 보통 사용한다.
ex)
- (네이버지도) 업체, 업체 사진 URL
- (쇼핑몰) 상품, 상품 옵션
- (쇼핑몰) 구매자, 배송지
한 가게의 이미지가 여러개일 때 Entity를 하나 더 만든다고 하면 그 Entity에는 String 한개만 들어가게 된다. 이럴땐 굳이 Entity를 사용할 필요는 없으니까 그걸 ElementCollection을 해주는 것이다.
엔티티 필드 타입이 List<값 타입>인 경우
import java.util.List;
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private List<String> imageUrls; // 여기 주목
protected Product() {
}
public Product(String name, List<String> imageUrls) {
this.name = name;
this.imageUrls = imageUrls;
}
}
Product로 인해서 DB에 테이블이 몇 개 생기나요?image_urls 컬럼의 타입은 뭔가요?image_urls 컬럼에 데이터가 어떤 식으로 관리될까요?import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import java.util.List;
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ElementCollection
private List<String> imageUrl; // 여기 주목
protected Product() {
}
public Product(String name, List<String> imageUrl) {
this.name = name;
this.imageUrl = imageUrl;
}
}
Product로 인해서 DB에 테이블이 몇 개 생기나요?😐 느낀점
필드는 만들 때마다 어떤 제한을 걸어줄지, 어느 곳에다가 넣어줄지에 대한
고민들을 하면 할 수록 좋은 코드가 나온다.