본문 바로가기
BackEnd/Spring Data JPA

JPA - @MappedSuperclass

by pan5158 2022. 11. 20.

@MappedSuperclass 어노테이션이란 생성자, 수정자, 생성일자, 수정일자를 자동화 생성으로 클래스 안에 있는 멤버변수가 컬럼으로 인식을 하는 것을 말합니다.

 

사용목적 - AuditingEntity 자동생성화는 abstract class 통해서 공통된 필드, 메소드등을 자식 클래스에 재정의 하므로 불필요한 반복적인 코드를 하지않고 개발의 생산성을 높여주기 위해서 사용을 합니다. 

 

코드를 통해서 확인하겠습니다. 

 

BaseEntity.class

package com.example.springboot.entity

import lombok.Getter
import org.springframework.data.annotation.CreatedBy
import org.springframework.data.annotation.LastModifiedBy
import org.springframework.data.jpa.domain.support.AuditingEntityListener
import javax.persistence.Column
import javax.persistence.EntityListeners
import javax.persistence.MappedSuperclass

@EntityListeners(value = [AuditingEntityListener :: class])
@MappedSuperclass
@Getter
abstract class BaseEntity: BaseTimeEntity(){

    @CreatedBy
    @Column(updatable = false)
    var createBy: String?=null

    @LastModifiedBy
    var modifiedBy: String?=null




}
  • @EntityListeners(value = [AuitingEntityListener :: class]) - 자동 생성이나 수정등 관리를 해주는 역학을 말합니다.
  • @MapperSuperclass - 멤버 변수가 컬럼으로 인식으로 되는 것을 말합니다.
  • @CreateBy - 자동 생성자
  • @LastModifiedBy - 자동 수정자
  • @Column(updatable = false) - 수정을 하지 않는 것을 말합니다.

 

BaseTimeEntity.class

package com.example.springboot.entity

import lombok.Getter
import lombok.Setter
import org.springframework.data.annotation.CreatedDate
import org.springframework.data.annotation.LastModifiedDate
import org.springframework.data.jpa.domain.support.AuditingEntityListener
import java.time.LocalDateTime
import javax.persistence.Column
import javax.persistence.EntityListeners
import javax.persistence.MappedSuperclass

@EntityListeners(value = [AuditingEntityListener::class])
@MappedSuperclass
@Getter
@Setter
abstract class BaseTimeEntity (){

    @CreatedDate
    @Column(updatable = false)
    var regTime: LocalDateTime = LocalDateTime.now()

    @LastModifiedDate
    var updateTime: LocalDateTime = LocalDateTime.now()


}

 

 

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

JPA 연관관계 @ManyToOne  (0) 2022.11.12
Hibernate ORM 이란  (0) 2022.08.31
💡 ORM 이란?  (0) 2022.08.04
영속성 컨텍스트(Persistence Context)  (0) 2022.05.18
JPA(Java Persistence)  (0) 2022.05.17