Posts [자바 ORM 표준 JPA 프로그래밍-기본편] Mapped Supperclass - 매핑 정보 상속
Post
Cancel

[자바 ORM 표준 JPA 프로그래밍-기본편] Mapped Supperclass - 매핑 정보 상속

본 포스팅은 인프러의 JPA 기본편을 수강하고 정리하는 내용입니다.


@MappedSuperclass

공통 매핑 정보가 필요할 때 사용(id, name)한다.

image

  • 상속관계 매핑X
  • 엔티티X, 테이블과 매핑X
  • 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공
  • 조회, 검색 불가(em.find(BaseEntity) 불가)
  • 직접 생성해서 사용할 일이 없으므로 추상 클래스 권장
  • 테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑정보를 모으는 역할
  • 주로 등록일, 수정일, 등록자, 수정자 같은 전체 엔티티에서 공통으로 적용하는 정보를 모을 때 사용
  • 참고: @Entity 클래스는 엔티티나 @MappedSuperclass로 지정한 클래스만 상속 가능

  • entity class
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
@MappedSuperclass
public abstract class BaseEntity {

    @Column(name = "INSERT_MEMBER")
    private String createdBy;
    private LocalDateTime createdDate;
    @Column(name = "UPDATE_MEMBER")
    private String lastModifiedBy;
    private LocalDateTime lastModifiedDate;

    ...
}

@Entity
public class Member extends BaseEntity {

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

    @Column(name = "USERNAME")
    private String username;

    @ManyToOne
    @JoinColumn(name = "TEAM_ID")
    private Team team;

    ...
}
  • main class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try {
    Member member = new Member();
    member.setUsername("user1");
    member.setCreatedBy("kim");
    member.setCreatedDate(LocalDateTime.now());

    em.persist(member);

    em.flush();
    em.clear();

    tx.commit();
} catch (Exception e) {
    tx.rollback();
} finally {
    em.close();
}
  • DDL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
create table Member (
  MEMBER_ID bigint not null,
  INSERT_MEMBER varchar(255),
  createdDate timestamp,
  UPDATE_MEMBER varchar(255),
  lastModifiedDate timestamp,
  USERNAME varchar(255),
  LOCKER_ID bigint,
  TEAM_ID bigint,
  primary key (MEMBER_ID)
)

create table Team (
  TEAM_ID bigint not null,
  INSERT_MEMBER varchar(255),
  createdDate timestamp,
  UPDATE_MEMBER varchar(255),
  lastModifiedDate timestamp,
  name varchar(255),
  primary key (TEAM_ID)
)
This post is licensed under CC BY 4.0 by the author.

[자바 ORM 표준 JPA 프로그래밍-기본편] 상속관계 매핑

[자바 ORM 표준 JPA 프로그래밍-기본편] 실전 예제4 - 상속관계 매핑