공통적으로 테이블들이 가지고 있는 필드나 컬럼들이 존재한다. 

대표적으로 생성일자, 수정일자, 식별자 같은 필드이다. 

 

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
블로그 이미지

나무뚱이

,