

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "DTYPE")
public abstract class Parent {
@Id @GeneratedValue
@Column(name = "Parent_ID")
private Long id;
private String name; //이름
private int price; //가격
}
@Entity
@DiscriminatorValue("C1")
public class Child1 extends Parent {
private String c_1;
}
@Entity
@DiscriminatorValue("C2")
public class Child2 extends Parent {
private String c_2; //감독
private String c_22; //배우
}
@Entity
@DiscriminatorValue("C3")
public class Child3 extends Parent {
private String c_3; //배우
}

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "DTYPE")
public abstract class Parent {
@Id @GeneratedValue
@Column(name = "Parent_ID")
private Long id;
private String name;
private int price;
}
@Entity
@DiscriminatorValue("C1")
public class Child1 extends Parent {
private String c_1;
}
@Entity
@DiscriminatorValue("C2")
public class Child2 extends Parent {
private String c_2;
private String c_22;
}
@Entity
@DiscriminatorValue("C3")
public class Child3 extends Parent {
private String c_3;
}
장점
단점
특징

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Parent {
@Id @GeneratedValue
@Column(name = "Parent_ID")
private Long id;
private String name;
private int price;
}
@Entity
public class Child1 extends Parent {
private String c_1;
}
@Entity
public class Child2 extends Parent {
private String c_2;
private String c_22;
}
@Entity
public class Child3 extends Parent {
private String c_3;
}

@MappedSuperclass
public abstract class Base {
private String name;
private Long price;
...
}
@Entity
public class Child_1 extends Base {
private Long id;
private String c_1;
...
}
@Entity
public class Child_2 extends Base {
private Long id;
private String c_2;
private String c_22;
}
@Entity
public class Child_3 extends Base {
private Long id;
private String c_3;
}