JPA Auditing

JinJinJara·2023년 11월 1일
0

TIL

목록 보기
10/19

Audit ?

Audit 기능 : Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능

  • 도메인을 영속성 컨텍스트에 저장하거나 조회를 수행한 후 update를 하는 경우,
    자동으로 시간을 맵핑 해 DB 테이블에 넣어준다.

Utility : Timestamp

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
   public class Timestamped {
   
      @CreatedDate
      @Column(updatable = false)
      private LocalDateTime createdAt;

      @LastModifiedDate
      @Column
      private LocalDateTime modifiedAt;
    
    }
  • @MappedSuperclass

    • Timestamped는 엔티티로 직접 매핑되지 않지만 다른 엔티티 클래스에서 공통적으로 사용할 수 있는 속성과 메서드를 정의 되어 있다
    • JPA Entity 클래스들이 Timestamped를 상속할 경우 createdAt, modifiedAt을 컬럼으로 인식
      • public class Board extends Timestamped {
  • @EntityListeners(AuditingEntityListener.class)
    : 해당 클래스에 Auditing 기능을 포함


Application

@SpringBootApplication
@EnableJpaAuditing
    public class DemoApplication {
       ... 

📌 @SpringBootApplication 이란?

  1. 스프링 부트 애플리케이션 클래스로 표시

    • 스프링 부트 애플리케이션의 진입점(Entry Point)으로 사용
    • @SpringBootApplication 이 있는 클래스는 main 메서드를 가져야 하며, 애플리케이션을 실행할 때 이 메서드가 호출된다.
  2. 자동 구성 설정 활성화

    • 스프링 부트는 자동 구성을 통해 애플리케이션을 설정하고, 클래스패스의 의존성에 따라 필요한 구성을 자동으로 제공합니다.
  3. 컴포넌트 스캔 활성화:

    • 스프링이 애플리케이션 패키지 및 하위 패키지에서 @Component, @Service,
      @Repository, @Controller 등과 같은 스프링 컴포넌트 어노테이션이 붙은 클래스를 검색하고 빈으로 등록하는 기능을 제공한다.
  4. 스프링 부트의 구성 옵션을 기본값으로 제공

    • 이러한 옵션은 application.properties 또는 application.yml 파일을 통해 커스터마이징 가능하다.

@SpringBootApplication 어노테이션 뜯어보기!

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
    ...

0개의 댓글