JPA Auditing기능
JPA Auditing이란?
- Java에서 ORM 기술인 JPA를 사용하여 도메인을 관계형 데이터베이스 테이블에 매핑할 때 공통적으로 도메인들이 가지고 있는 필드나 컬럼들이 존재합니다. 대표적으로 생성일자, 수정일자, 식별자 같은 필드 및 컬럼이 있습니다.
- 결국 공통적으로 가지고 있다는것은 코드가 중복된다는 말과 같습니다.
- 도메인을 영속성 컨텍스트에 저장하거나 조회를 수행한 후에 update를 하는 경우 매번 시간 데이터를 입력하여 주어야 하는데, audit을 이용하면 자동으로 시간을 매핑하여 데이터베이스의 테이블에 넣어주게 됩니다.
build.grade에 의존성 추가
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.projectlombok:lombok')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
}
BaseTimeEntity.java
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity{
// Entity가 생성되어 저장될 때 시간이 자동 저장됩니다.
@CreatedDate
private LocalDateTime createdDate;
// 조회한 Entity 값을 변경할 때 시간이 자동 저장됩니다.
@LastModifiedDate
private LocalDateTime modifiedDate;
}
어노테이션 | 설명 |
@MappedSuperclass | JPA Entity 클래스들이 해당 추상 클래스를 상속할 경우 createDate, modifiedDate를 컬럼으로 인식 |
@EntityListeners(AuditingEntityListener.class | 해당 클래스에 Auditing 기능을 포함 |
@CreatedDate | Entity가 생성되어 저장될 때 시간이 자동 저장 |
@LastModifiedDate | 조회한 Entity의 값을 변경할 때 시간이 자동 저장 |
상속받기
Posts클래스가 Entity클래스이므로 BaseEntity를 상속받도록 변경
public class Posts extends BaseTimeEntity{}
JPA Auditing 어노테이션을 활성화
JPA Auditing 어노테이션을 활성화하도록 Application클래스에 활성화 어노테이션 추가
@EnableJpaAuditing
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(FreelecApplication.class, args);
}
}
728x90
'Spring' 카테고리의 다른 글
[스프링 MVC 1편] - 웹 애플리케이션 이해 (1) | 2022.12.31 |
---|---|
[spring] 게시판 CRUD 만들기 (0) | 2022.12.30 |
스프링 핵심 원리[기본편] - 의존관계 자동 주입 (0) | 2022.12.28 |
스프링 핵심 원리[기본편] - 컴포넌트 스캔 (0) | 2022.12.27 |
스프링 핵심 원리[기본편] - 싱글톤 컨테이너 (0) | 2022.12.27 |