[JPA] AuditingEntityListener, createDate, modifiedDate를 통한 ROW 생성 시간 및 수정 시간 기록하기
프로그래밍/JPA 2020. 11. 7. 12:14
공통적으로 테이블들이 가지고 있는 필드나 컬럼들이 존재한다.
대표적으로 생성일자, 수정일자, 식별자 같은 필드이다.
JPA는 Audit라는 기능을 제공한다.
Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는기능이다.
build.grade 의존성
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.projectlombok:lombok')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
}
@EnableJpaAuditing |
JPA Audit를 사용하기 위해 Application.java에 선언한다. |
@MappedSuperclass |
JPA Entity 클래스들이 해당 추상 클래스를 상속할 경우 createDate, modifiedDate를 컬럼으로 인식 |
@EntityListeners(AuditingEntityListener.class) |
해당 클래스에 Auditing 기능을 포함 |
@CreatedDate |
Entity가 생성되어 저장될 때 시간이 자동 저장 |
@LastModifiedDate |
조회한 Entity의 값을 변경할 때 시간이 자동 저장 |
Application.java
@RestController
@EnableJpaAuditing // JPA Audit를 사용하기 위해 Application.java에 선언한다.
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
TimeEntity.java
package com.example.demo.domain.entity;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import lombok.Getter;
@Getter
@MappedSuperclass // 테이블로 매핑하지 않고, 자식 Entity에게 매핑정보를 상속하기 위한 어노테이션
@EntityListeners( AuditingEntityListener.class ) // JPA에게 해당 Entity는 Auditing 기능을 사용한다는 것을 알리는 어노테이션
public class TimeEntity{
@CreatedDate // Entity가 생성되어 저장될 때 시간이 자동 저장됩니다.
@Column(updatable = false)
private LocalDateTime createDate;
@LastModifiedDate // 조회한 Entity의 값을 변경할 때 시간이 자동 저장
private LocalDateTime modifiedDate;
}
'프로그래밍 > JPA' 카테고리의 다른 글
[JPA] @id , @GeneratedValue, @COLUMN (0) | 2020.11.09 |
---|