티스토리 뷰

728x90
반응형
정의 : 엔티티들 사이에서 공통적으로 사용되는 컬럼을 모아두는 클래스일 경우 선언하여 사용하는 어노테이션

 

MappedSuperclass 선언 예제 코드

@MappedSuperclass
public abstract class BaseEntity {

	private String createBy;
	
	private LocalDate createDate;
	
	private String modifyedBy;
	
	private LocalDate modifyDate;
    
    ...
}

→ 선언할 경우 왠만하면 추상클래스로 선언하는 것이 좋다.
적용 대상 클래스 Member.java
@Entity
public class Member extends BaseEntity{
	
	@Id
	@Column(name="MEMBER_ID")
	private Long id;
	
	private String name;
	
	private String city;
	
	private String street;
	
	private String zipcode;
 
 	...
 }
테이블 결과 화면: BaseEntity 컬럼들이 자동 생성

member 테이블 생성

@MappedSuperclass 특징
  • 테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑정보를 모으는 역할
  • 주로 등록일,수정일,등록자,수정자 같은 전체 엔티티에서 공통적으로 적용하는 정보를 모을 때 사용
  • 참고 : @Entity 클래스는 @Entity나 @MappedSuperclass로 지정한 클래스만 상속 가능
@MappedSuperclass 주의 점
  • 상속관계 매핑이 아님
  • 엔티티 또는 테이블과 매핑하는 것이 아님
  • 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공
  • 조회, 검색 불가(em.find(BaseEntity)불가)
  • 직접 생성해서 사용할 일이 없으므로 추상 클래스 권장
728x90
반응형
250x250
반응형
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함