🔙뒤로가기
요구사항 추가
- 상품의 종류는 음반, 도서, 영화가 있고 이후 더 확장될 수 있다.
- 모든 데이터는 등록일과 수정일이 필수다.
도메인 모델


테이블

Album Entity
package practice;
import javax.persistence.Entity;
@Entity
public class Album extends Item{
private String artist;
private String etc;
public String getArtist() {
return artist;
}
public void setArtist(String artist) {
this.artist = artist;
}
public String getEtc() {
return etc;
}
public void setEtc(String etc) {
this.etc = etc;
}
}
Book Entity
package practice;
import javax.persistence.Entity;
@Entity
public class Book extends Item{
private String author;
private String isbn;
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
}
Movie Entity
package practice;
import javax.persistence.Entity;
@Entity
public class Movie extends Item{
private String director;
private String actor;
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
}
Item Entity의 InheritanceType.SINGLE_TABLE)
package practice;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn // (name = "DTYPE") 기본값
public abstract class Item {
// 생략
}
결과 콘솔(Item 테이블에 모든 엔티티를 포함하여 생성)
Hibernate:
create table Item (
DTYPE varchar(31) not null,
ITEM_ID bigint not null,
name varchar(255),
price integer not null,
stockQuantity integer not null,
artist varchar(255),
etc varchar(255),
author varchar(255),
isbn varchar(255),
actor varchar(255),
director varchar(255),
primary key (ITEM_ID)
)
Hibernate:
/* insert practice.Book
*/ insert
into
Item
(name, price, stockQuantity, author, isbn, DTYPE, ITEM_ID)
values
(?, ?, ?, ?, ?, 'Book', ?)
Item Entity의 InheritanceType.JOINED)