-
엔티티의 생성 및 수정 시간 자동화하기Spring 2024. 4. 9. 17:47
Spring Data JPA의 Auditing 기능을 사용하여 엔티티의 생성 시간과 수정 시간을 자동으로 기록하는 방법은 개발자로 하여금 반복적인 작업에서 벗어나게 하고, 코드의 간결성을 유지할 수 있게 합니다.
코드 예시
@Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public class BaseTimeEntity { @CreatedDate private LocalDateTime dateCreated; @LastModifiedDate private LocalDateTime dateUpdated; }
Annotation 설명
@Getter Lombok 라이브러리의 어노테이션으로, 이 클래스의 모든 필드에 대한 getter 메소드를 자동으로 생성합니다.
@MappedSuperclass JPA의 어노테이션으로, 이 클래스를 상속하는 엔티티 클래스들이 BaseTimeEntity의 필드(dateCreated, dateUpdated)를 컬럼으로 인식하도록 합니다.
@EntityListeners(AuditingEntityListener.class) JPA 엔티티의 이벤트를 처리하기 위한 리스너를 지정합니다. AuditingEntityListener를 사용하여 엔티티의 생성 및 수정 시간을 자동으로 감사(audit)합니다.
@CreatedDate 엔티티가 생성되어 저장될 때의 시간을 자동으로 기록합니다.
@LastModifiedDate= 엔티티가 마지막으로 수정된 시간을 자동으로 기록합니다.설정 방법
JPA Auditing을 사용하기 위해서는 Spring Boot의 메인 애플리케이션 클래스나 설정 클래스에 @EnableJpaAuditing 어노테이션을 추가하여 Auditing 기능을 활성화해야 합니다.
코드 예시 - @EnableJpaAuditing 활성화
@SpringBootApplication @EnableJpaAuditing public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
또 다른 구현 방법
JPA의 생명주기 콜백 메소드를 직접 사용하여 같은 기능을 구현할 수 있습니다.
@MappedSuperclass public class BaseTimeEntityManual { private LocalDateTime dateCreated; private LocalDateTime dateUpdated; @PrePersist public void prePersist() { this.dateCreated = LocalDateTime.now(); this.dateUpdated = LocalDateTime.now(); } @PreUpdate public void preUpdate() { this.dateUpdated = LocalDateTime.now(); } }
추천 방법
@EnableJpaAuditing을 활성화하고, @CreatedDate 및 @LastModifiedDate 어노테이션을 사용하는 방식이 더 선호됩니다. 이 방식은 코드를 간결하게 유지하고, Spring Data JPA의 강력한 기능을 최대한 활용할 수 있게 합니다.
장점
코드 자동화의 이점
반복 코드 감소, 개발 효율성 증가, 데이터 일관성 유지'Spring' 카테고리의 다른 글
Redis에서의 KEYS와 SCAN 명령어 비교 (0) 2024.04.16 프로젝트 회고 - 수업 스케줄 일괄 변경 배치 처리 (0) 2024.04.08 프로젝트 회고 - 스케줄 자동 공개 성능 최적화 (1) 2024.04.04 Spring Version에 맞는 h2Database 설치 (0) 2023.04.16 @Transactional 제대로 알고 쓰기 (0) 2021.11.18