JPA - MappedSuperClass

2023. 12. 10. 03:32·Spring/JPA
728x90
반응형
SMALL

 

 

@MappedSuperclass란?
  • 객체의 입장에서 공통 매핑 정보가 필요할 때 사용
  • 예를 들어 공통으로 작성일, 작성자, 수정일, 수정자를 공통으로 집어넣고 싶을때 사용한다.
  • 공통 매핑 정보가 필요할 떄 부모 클래스에 선언하고 속성만 상속받아서 사용하고 싶을 때 사용한다.
    객체에 적용하기
    
    import lombok.Data;
    
    import javax.persistence.MappedSuperclass;
    import java.time.LocalDate;
    import java.time.LocalDateTime;
    
    @Data
    @MappedSuperclass
    public abstract class BaseEntity {
    
        /**
         * 작성자 및 작성일
         */
        private String createdBy;
        private LocalDateTime createdDate;
    
        /**
         * 수정자 와 수정일
         */
        private String lastModifedBy;
        private LocalDateTime lastModifedDate;
    
    
    }

    @Entity
    @Data
    @NoArgsConstructor(access = AccessLevel.PROTECTED)//기본생성자 protected
    @ToString(of = {"id","username","age"})
    public class Member extends BaseEntity {
    
        @Id
        @GeneratedValue
        @Column(name = "member_id")
        private Long id;
    
        private String username;
        private int age;
    
        @ManyToOne(fetch = LAZY)
        @JoinColumn(name = "team_id")
        Team team;
  •  
  • Member객체에 적용하기
  • BaseEntity( 공통 적용 값)
  •  

정리

  • 상속관계 매핑이 아니다
  • MappedSuperClass를 선언하면 엔티티가 아니며, 테이블과도 매핑되지 않는다.
  • 단순히 부모 클래스를 상속받는 자식 클래스에 매핑 정보만 제공된다
  • 부모 타입으로 조회가 불가능하다.
  • 직접 생성할 일이 없으므로 추상 클래스로 만드는 것을 권장
  • JPA에서 Entity는 Entity나 MappedSuperclass로 지정한 클래스만 상속받을 수 있다.

 

 

728x90
반응형
SMALL

'Spring > JPA' 카테고리의 다른 글

@Where Deprecated되고 새로 쓰이는 @SQLRestriction  (1) 2024.11.20
JPA - DB 연결 예외 : 'url' attribute is not specified and no embedded datasource could be configured.  (0) 2024.06.14
JPA - 지연로딩과 즉시로딩  (1) 2023.12.10
JPA - Proxy  (2) 2023.12.10
JPA - 상속관계매핑  (0) 2023.12.09
'Spring/JPA' 카테고리의 다른 글
  • JPA - DB 연결 예외 : 'url' attribute is not specified and no embedded datasource could be configured.
  • JPA - 지연로딩과 즉시로딩
  • JPA - Proxy
  • JPA - 상속관계매핑
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
    250x250
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (315)
      • 면접 준비 (36)
        • OS (6)
        • Spring Security (0)
        • Java (2)
        • DB (9)
        • Network (3)
      • ElasticSearch (2)
      • Kafka (4)
      • Spring (22)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (2)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      자바 반복문
      jsp기초
      Til
      JSP
      java
      Spring
      JS
      자바 면접질문
      리눅스
      레디스
      Spring Data Redis
      자바
      redis 채팅
      자바 면접
      자바스크립트
      리눅스마스터2급
      redis
      자바기초
      spring redis
      jsp request
      CSS
      springsecurity
      리눅스마스터2급정리
      JavaScript
      HTML
      프로그래머스
      Springframework
      자바 알고리즘
      백준
      스프링프레임워크
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    JPA - MappedSuperClass
    상단으로

    티스토리툴바