BaseEntity를 사용하는 이유
대부분의 엔티티에는 공통 필드가 존재한다.
- id
- 생성일(createdDate)
- 수정일(modifiedDate)
모든 엔티티마다 동일한 코드를 작성하면 중복이 발생한다.
그래서 공통 속성을 BaseEntity에 모아두고 상속해서 사용한다.
@MappedSuperclass
@MappedSuperclass는 공통 속성을 여러 엔티티에서 재사용하기 위한 어노테이션이다.
- 실제 테이블과 매핑되지 않고, 상속받는 엔티티의 테이블에 컬럼으로 포함됨
- 공통으로 사용되는 필드(예: 생성일시, 수정일시 등)를 한 곳에서 관리할 수 있음
- 엔티티 클래스에서 @MappedSuperclass가 적용된 클래스를 상속받아 사용
- 상속 관계 매핑이 아닌 단순히 공통 속성을 재사용하는 용도로 사용
- @Entity 어노테이션과 함께 사용할 수 없음
- 추상 클래스로 선언하는 것이 일반적
예를 들어
@MappedSuperclass
public abstract class BaseEntity {
...
}
@Entity
public class Post extends BaseEntity {
}
Post 테이블에는 BaseEntity의 필드가 함께 생성된다.
abstract를 사용하는 이유
BaseEntity는 공통 기능만 제공하는 클래스이다.
직접 생성할 일이 없다.
new BaseEntity();
이런 코드는 의미가 없기 때문에
public abstract class BaseEntity
로 선언하여 객체 생성을 막는다.
즉, 코드의 의도를 명확하게 하기 위해 추상 클래스로 선언한다.
'BackEnd > Spring' 카테고리의 다른 글
| [Spring] 외래키 (0) | 2026.08.04 |
|---|---|
| [Spring] 테스트 환경 분리(dev / test) (0) | 2026.08.04 |
| [Spring] 더티 체킹(Dirty Checking) (0) | 2026.08.04 |
| [Spring] @Component, @Transactional, JPA Auditing (0) | 2026.07.31 |
| [Spring] intelliJ 세팅 (0) | 2026.07.31 |
댓글