Skip to content

Latest commit

 

History

History
83 lines (66 loc) · 2 KB

mapped-superclass-mapping.md

File metadata and controls

83 lines (66 loc) · 2 KB

@MappedSuperclass, @AttributeOverrides

  • 상속 관계 매핑 X, 엔티티 X
  • 부모 클래스에서 제공하는 컬럼에 대한 정보들만 제공받아서 사용한다.
  • 즉, 중복되는 필드나 메서드 구현을 줄여 객체 지향적으로 구현한다.

구현

@MappedSuperclass
public class BaseEntity {

	private String creatorId;
	private LocalDateTime createdDate;
	private String modifierId;
	private LocalDateTime modifiedDate;
}
@Entity
public class A extends BaseEntity {

    @Id @GeneratedValue
    @Column(name = "A_ID")
    private Long id;

    private String AColumn;
}

DDL 결과

create table a (
    a_id bigint not null,
    created_date datetime(6),
    creator_id varchar(255),
    modified_date datetime(6),
    modifier_id varchar(255),
    acolumn varchar(255),
    primary key (a_id)
)

@AttributeOverrides

  • @AttributeOverride를 이용해 상속 받은 매핑 정보를 재정의할 수 있다.
@Entity
@AttributeOverrides({
	@AttributeOverride(name = "creatorId", column = @Column(name = "createdBy")),
	@AttributeOverride(name = "createdDate", column = @Column(name = "createdAt")),
	@AttributeOverride(name = "modifierId", column = @Column(name = "modifiedBy")),
	@AttributeOverride(name = "modifiedDate", column = @Column(name = "modifiedAt"))
})
public class A extends BaseEntity {

	@Id @GeneratedValue
	@Column(name = "A_ID")
	private Long id;

	private String AColumn;
}

DDL 결과

create table a (
    a_id bigint not null,
    created_at datetime(6),
    created_by varchar(255),
    modified_at datetime(6),
    modified_by varchar(255),
    acolumn varchar(255),
    primary key (a_id)
)