- 도서 , 음반, 영화 항목 추가
- 생성자, 생성일자, 수정자, 수정날짜를 모든 테이블에 추가
단일 테이블 전략 아래와 같이 설정
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
조인 전략은 아래와 같이 설정
@Inheritance(strategy = InheritanceType.JOINED)
Album , Book , Movie 클래스는 각각 다 Item 클래스를 상속받았음
그리고 Item 클래스는 공통항목에 대해서 정의를 하고 테이블 전략을 설정함
=====================================================================
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
public abstract class Item extends BaseEntity{
@Id @GeneratedValue
@Column(name = "ITEM_ID")
private Long id;
private String name;
...이하 중략...
}
=====================================================================
- Album.java
=====================================================================
package com.jpabook.jpashop.domain;
import javax.persistence.Entity;
@Entity
public class Album extends Item{
private String artist;
private String etc;
}
=====================================================================
- Book.java
=====================================================================
package com.jpabook.jpashop.domain;
import javax.persistence.Entity;
@Entity
public class Book extends Item{
private String author;
private String isbn;
}
=====================================================================
- Movie.java
=====================================================================
package com.jpabook.jpashop.domain;
import javax.persistence.Entity;
@Entity
public class Movie extends Item{
private String director;
private String actor;
}
=====================================================================
- BaseEntity.java ( 공통으로 적용할 컬럼들 )
=====================================================================
package com.jpabook.jpashop.domain;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
@MappedSuperclass
public abstract class BaseEntity {
private String createBy;
private LocalDateTime createdDate;
private String lastModifiedBy;
private LocalDateTime lastModifiedDate;
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public LocalDateTime getCreatedDate() {
return createdDate;
}
public void setCreatedDate(LocalDateTime createdDate) {
this.createdDate = createdDate;
}
public String getLastModifiedBy() {
return lastModifiedBy;
}
public void setLastModifiedBy(String lastModifiedBy) {
this.lastModifiedBy = lastModifiedBy;
}
public LocalDateTime getLastModifiedDate() {
return lastModifiedDate;
}
public void setLastModifiedDate(LocalDateTime lastModifiedDate) {
this.lastModifiedDate = lastModifiedDate;
}
}
=================================================================================================================