실전 예제
Last updated
Last updated
@Entity
// 단일 테이블 전략을 사용한다.
@Inheritance(strategy = SINGLE_TABLE)
// DTYPE으로 데이터를 구분한다.
@DiscriminatorColumn
// 아이템만 단독으로 테이블에 저장할 일이 없다고 가정하고 추상 클래스로 선언한다.
public abstract class Item {
@Id
@GeneratedValue
@Column(name = "item_id")
private Long id;
private String name;
private int price;
private int stockQuantity;
@ManyToMany(mappedBy = "items")
private List<Category> categories = new ArrayList<>();
}@Entity
public class Album extends Item {
private String artist;
private String etc;
}@Entity
public class Book extends Item {
private String author;
private String isbn;
}@Entity
public class Movie extends Item {
private String director;
private String actor;
}@MappedSuperclass
public abstract class BaseEntity {
private String createdBy;
private LocalDateTime createdDate;
private String lastModifiedBy;
private LocalDateTime lastModifiedDate;
}@Entity
@Inheritance(strategy = SINGLE_TABLE)
@DiscriminatorColumn
// BaseEntity를 상속한다.
public abstract class Item extends BaseEntity {
...
}