728x90
300x250
register date와 modify date를 작업이 이뤄질때마다 set하는 것은 번거롭고 귀찮은 작업이다.
JPA의 Aduiting 기능을 통해 생성/수정시간을 자동으로 저장해보도록 하자.
1. BaseTimeEntity 추상 클래스 생성
생성시간/수정시간을 변수로가지고 있는 추상 클래스로 모든 Entity들이 상속받도록 한다.
import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {
@CreatedDate
private LocalDateTime createTime;
@LastModifiedDate
private LocalDateTime modifiedDate;
}
@MappedSuperclass - 공통된 부분을 상속받을 수 있게 매핑
@EntityListeners(AuditingEntityListener.class) - 해당 클래스에 JPA Aduiting 기능 추가
@CreatedDate - Entity 생성될때 시간 자동 저장
@LastModifiedDate- Entity의 값이 변경될때 시간 자동 저장
2. 시간 변수가 필요한 Entity에 BaseTimeEntity를 상속
public class Posts extends BaseTimeEntity{
3. Application main 코드에 JPA Aduiting 활성화 코드 추가
@EnableJpaAuditing
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
끝!
728x90
'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] Comparator 이용한 ArrayList 정렬하기 - return 값의 양수/0/음수 의미, Java 오름차순 정렬 예제 (0) | 2023.06.15 |
---|---|
[JAVA] 비밀번호 암호화 하기 SHA-256 알고리즘 + Salt 적용 예제 - 레인보우 테이블 (1) | 2022.06.01 |
[JAVA] ORM, JPA, Hibernate, Mybatis, SQL Mapper 용어 정리 (0) | 2021.01.10 |
[JAVA] 1차원,2차원 배열의 깊은복사, 얕은복사? (0) | 2020.03.24 |
[JAVA] Scanner와 BufferedReader 차이와 BufferedReader, BufferedWriter 사용법 (0) | 2020.03.04 |