@MappedSuperClass
@MappedSuperClass
public abstract class CommonEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
}
- id, 등록일, 수정일, 등록한 사람, 수정한 사람 등 많은 Entity에서 공통으로 사용하는 컬럼을 모아놓은 클래스
@MappedSuperClass
클래스를 @Entity
클래스가 상속 받으면 테이블에 컬럼이 추가된다
- JPA의
@Entity
클래스는 @Entity
클래스와 @MappedSuperClass
클래스만 상속 받을 수 있다
- DB에서는 테이블 상속 관계를 구현하지 않으며, 테이블에 컬럼만 추가한다
@Entity
아님(테이블 생성하지 않음)
- Java에서 직접 사용할 일이 없으므로 추상 클래스로 사용하는 것을 권장한다
상속 예시
@Entity
public class Member extends CommonEntity {
private String name;
private String phone;
}
SQL 결과
create table Member (
id bigint generated by default as identity,
createdAt timestamp,
updatedAt timestamp,
name varchar(255),
phone varchar(255),
primary key (id)
)