목차
스프링부트 프로젝트에서 JpaAuditing 설정과 사용
JPA Auditing 이란?
Spring Data JPA를 사용하여 Entity의 생성일과 수정일을 자동으로 추적하여 업데이트해준다.
Database Entity의 변경이력을 좀 더 쉽게 관리할 수 있다.
JPA 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
JPA Auditing 활성화
@EnableJpaAuditing 어노테이션을 메인 클래스 또는 별도의 설정 클래스에 추가한다.
@EnableJpaAuditing
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
또는 별도의 설정파일을 만들어서 사용한다.
@EnableJpaAuditing
@Configuration
public class AuditingConfig {
}
JPA Auditing BaseEntity 생성
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {
@CreatedDate
@Column(nullable = false, updatable = false)
protected LocalDateTime createdAt;
@LastModifiedDate
@Column(nullable = false)
protected LocalDateTime lastModifiedAt;
}
@CreatedDate : 생성일 관리
@LastModifiedDate : 수정일 관리
@MappedSuperclass : 해당 클래스가 엔티티가 아닌 공통 기능을 제공하는 부모클래스임을 명시
@EntityListeners(AuditingEntityListener.clss) : JPA auditing을 위한 리스너를 지정
@CreatedDate 어노테이션은 updatable = false를 추가해서 변경을 방지한다.
Entity에서의 활용
JPA Auditing이 설정된 BaseTimeEntity를 상속받아 사용한다.
@Entity
@AllArgsConstructor
@NoArgsConstructor
public class MyEntity extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
'프로그래밍 > TIL' 카테고리의 다른 글
[TIL] LocalDateTime to String, String to LocalDateTime (0) | 2024.01.31 |
---|---|
[TIL] Spring Legacy - Java의 enum값을 MySQL 넣기 (0) | 2024.01.30 |
[TIL] LocalDate, LocalTime, LocalDateTime (0) | 2024.01.29 |
[TIL] MyBatis 그리고 ObjectMapper (0) | 2024.01.28 |
[TIL] Spring Annotation (0) | 2024.01.26 |