728x90
@MappedSupercass란❓
@MappedSuperclass는 JPA(Java Persistence API)에서 사용하는 어노테이션으로, 객체 관계 매핑에서 부모 클래스가 공통적으로 제공하는 매핑 정보를 자식 클래스에 상속하고자 할 때 사용됩니다.
이 어노테이션은 부모 클래스에 붙여지며, 이 클래스를 상속받는 모든 자식 엔티티 클래스들은 부모 클래스에서 정의한 매핑 정보를 물려받게 됩니다.
주요 특징
- 테이블 매핑 없음
- @MappedSuperclass가 붙은 클래스 자체는 데이터베이스 테이블과
매핑되지 않습니다.- 즉, 이 클래스는 테이블로 매핑되지 않으며, 데이터베이스에 대응되는
물리적 테이블을 생성하지 않습니다.
- 즉, 이 클래스는 테이블로 매핑되지 않으며, 데이터베이스에 대응되는
- 대신, 이 클래스를 상속받는 엔티티 클래스들이 이 클래스에서 정의한 필드와 매핑 정보를 상속받아 자신의 테이블에 포함시킵니다.
- @MappedSuperclass가 붙은 클래스 자체는 데이터베이스 테이블과
- 상속 구조
- 상속을 통해 공통적인 필드(예: id, createdAt, updatedAt 등)를 여러 엔티티에서 재사용할 수 있습니다.
- 예를 들어, 여러 엔티티 클래스에서 공통적으로 사용되는 필드를 @MappedSuperclass로 정의해두면, 이를 상속받는 엔티티 클래스들이 해당 필드를 자동으로 포함하게 됩니다.
- 상속을 통해 공통적인 필드(예: id, createdAt, updatedAt 등)를 여러 엔티티에서 재사용할 수 있습니다.
- 재사용성
- 코드의 재사용성과 일관성을 높여줍니다.
- 여러 엔티티에서 반복적으로 사용되는 필드나 메서드를 하나의 상위 클래스에 정의함으로써, 코드의 중복을 줄이고 유지보수를 쉽게 할 수 있습니다.
- JPA 상속 전략과의 차이
- JPA의 상속 전략(@Inheritance)과는 다릅니다.
- @Inheritance는 하나의 엔티티 계층 구조를 단일 테이블, 조인된 테이블, 또는 구체적인 테이블 전략으로 매핑하는 데 사용되며, 실제 데이터베이스에서 여러 테이블을 관리하게 됩니다.
- 반면에 @MappedSuperclass는
테이블 매핑을 하지 않으며, 단순히 상속된 엔티티 클래스의 테이블에 필드를 추가하는 방식입니다.
- JPA의 상속 전략(@Inheritance)과는 다릅니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.09.01 - Java 12+의 switch 표현식으로 코드 간결성 높이기 (0) | 2024.09.01 |
---|---|
[TIL, 일일 회고] 2024.08.31 - @MappedSuperclass 적용하기 (0) | 2024.08.31 |
[TIL, 일일 회고] 2024.08.29 - UserDetails와 getAuthorities() 메서드 이해하기 (0) | 2024.08.29 |
[TIL, 일일 회고] 2024.08.28 - Git 브랜치 전환 시 파일이 계속 보이는 이유와 해결 방법 (0) | 2024.08.28 |
[TIL, 일일 회고] 2024.08.27 - Spring Security와 @AuthenticationPrincipal을 활용한 관리자 및 사 (0) | 2024.08.27 |