JPA Auditing을 사용하는 이유
보통 Entity는 해당 데이터의 생성시간과 수정시간을 포함한다.
그 이유는 생성/수정 정보는 유지보수에 있어서 굉장히 중요한 정보이기 때문..
그러므로 항상 같이 저장해주는 것이 좋다.
그러나 매번 DB에 삽입할 때 날짜 데이터를 등록/수정하는 코드를 만드는 것은 비효율적이다.
이를 자동화하여 해결해주는 것이 JPA Auditing!!
LocalDate
Java의 기본날짜 자료형인 Date는 문제점이 많아서 사용하지 않는다.
그래서 Java8 이전에는 JodaTime이라는 오픈소스를 사용하였고, Java8부터는 LocalDate와 LocalDateTime을 사용한다.
먼저, BaseEntity 클래스를 생성하자.
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseEntity {
@CreatedDate
private LocalDateTime created_date;
@LastModifiedDate
private LocalDateTime modified_date;
}
@EntityListeners(AuditingEntityListener.class)
해당 클래스에 Auditing 기능을 포함시킨다.
@MappedSuperclass
JPA Entity 클래스들이 해당 클래스를 상속할 경우, 이 클래스의 필드 또한 컬럼으로 인식하게 한다.
@CreatedDate
Entity가 생성되면, 해당 변수에 저장 시간이 자동으로 저장된다.
@LastModifiedDate
조회한 Entity의 값이 변경할 때, 시간이 자동으로 저장된다.
다음으로, 다른 Entity를 BaseEntity에 상속해준다.
@Getter
@NoArgsConstructor
@Entity
public class Post extends BaseEntity {
// 생략
}
마지막으로, JPA Auditing을 활성화할 수 있도록 Application 클래스에 활성화 어노테이션(@EnableJpaAuditing)을 추가해준다.
@EnableJpaAuditing
@SpringBootApplication
public class LikeblogApplication {
public static void main(String[] args) {
SpringApplication.run(LikeblogApplication.class, args);
}
}
이렇게 하면 자동으로 DB에 BaseEntity의 변수를 포함시킬 수 있다 !!
이번 포스트에선 JPA Auditing의 간단한 사용 방법만 정리하였는데
다음엔 @EntityListeners의 자세한 내용도 정리할 것이다.
조에림 파이팅 ~~!~
저의 이해를 도와준 포스트
[Spring] 게시판 만들기 - JPA Auditiong으로 생성시간 / 수정시간 자동화 하기
이 게시물은 이동욱님의 “스프링 부트와 AWS로 혼자 구현하는 웹 서비스”를 읽고 공부하며 작성한 게시물입니다.
learnote-dev.com
[SpringBoot] 생성시간/수정시간 칼럼 자동화
"스프링 부트와 AWS로 혼자 구현하는 웹 서비스"의 3장 '스프링 부트에서 JPA로 데이터베이스 다뤄보자'를 공부하던 중 맨 마지막 부분의 "JPA Auditing으로 생성시간/수정시간 자동화하기"는 잘 알아
velog.io
다음에 @EntityListeners 공부할 때 참고할 예정인 포스트
[Spring] Spring Data JPA에서 Auditing 사용하는 법
JPA AuditingEntityListener 알아보기 위의 코드는 제가 작성했던 코드인데요. 누군가 저에게 아래와 같이 물었습니다. LocalDateTime.now() 코드는 왜 작성한거야? 위의 질문을 듣고 아.. BaseEntity를 통해서 생
devlog-wjdrbs96.tistory.com
Spring boot :: JPA @EntityListeners 정리
이번에는 JPA Entity에서 이벤트가 발생할 때마다 특정 로직을 실행시킬 수 있는 @EntityListeners를 정리해보려고 한다. 예제 코드는 Spring boot와 Kotlin을 사용하여 작성하였다. JPA EntityListeners 란? 하이
wave1994.tistory.com
'Backend > Spring' 카테고리의 다른 글
[Web] Servlet이란? (0) | 2023.09.20 |
---|---|
[Spring] 객체 지향과 SOLID 원칙 (0) | 2023.07.04 |
[Spring] 스프링 빈과 의존관계 (1) | 2023.02.04 |
[JPA] persist와 merge 이해(차이) (0) | 2023.01.13 |
[Spring Boot] 공부하면서 정리해가는 yml 설정 (0) | 2022.12.22 |