Embeddable 맵핑하기

@Embeddable
public class Image {

@Parent
private Item item;

@Column(length = 255, nullable = false)
private String name;

@Column(length = 255, nullable = false)
private String filename;

@Column(nullable = false)
private int sizeX;

@Column(nullable = false)
private int sizeY;
}
  • 모든 속성이 복합키로 사용되기 때문에, 모두 Not Null로 설정해주어야 한다.
  • back point 필요 없으면 @Parent 애노테이션 붙인 속성 없애면 된다.

컬렉션 맵핑하기

	@CollectionOfElements
@JoinTable(name = "ITEM_IMAGE", joinColumns = @JoinColumn(name = "IMAGE_ID"))
@CollectionId(columns = @Column(name = "ITEM_IMAGE_ID"),
type = @Type(type = "long"), generator = "sequence")
@AttributeOverride(name = "element.name",
column = @Column(name = "IMAGENAME", length = 255, nullable = false))
private Set<Image> images = new HashSet<Image>();
  • 컴포넌트의 속성을 재정의 할 수 있다.
  • 컴포넌트 속성이 Null을 포함하게 하려면, @CollectinoId()를 추가해주면 된다.