JPA Auditing기능이란?

2022. 12. 29. 00:10·Spring

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
'Spring' 카테고리의 다른 글
  • [스프링 MVC 1편] - 웹 애플리케이션 이해
  • [spring] 게시판 CRUD 만들기
  • 스프링 핵심 원리[기본편] - 의존관계 자동 주입
  • 스프링 핵심 원리[기본편] - 컴포넌트 스캔
study ticket
study ticket
  • study ticket
    혼자하는 공부
    study ticket
  • 전체
    오늘
    어제
    • 개발 (77)
      • 오류 (1)
      • Spring (13)
      • Java (0)
      • Data structure (6)
      • Algorithm (49)
        • 백준 (17)
        • 프로그래머스 (2)
      • 문제풀면서 알게되는것들 끄적 (2)
      • 머신러닝 (4)
        • sklearn (3)
        • pandas (1)
      • 프로젝트 (0)
        • 핏두 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준1157
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
study ticket
JPA Auditing기능이란?
상단으로

티스토리툴바