JPA) 생성일/수정일 자동으로 생성하기

Dokuny·2021년 12월 18일
1

프로젝트를 진행하면서 어떻게 해야 jpa로 자동으로 데이터베이스에 생성일이나 수정일을 넣을 수 있을까 찾아보다가 발견하여 정리한다.

JPA Auditing 을 이용하면 된다고 한다.

롬복을 이용할 것이니 참고!


1. BaseTimeEntity 작성

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {

    @CreatedDate
    @Column(updatable = false,nullable = false)
    private LocalDateTime regDate;

    @LastModifiedDate
    @Column(nullable = false)
    private LocalDateTime modDate;
}
  • @MappedSuperclass : JPA Entity 클래스들이 BaseTimeEntity를 상속할 경우 필드들(createdDate, modifiedDate)도 칼럼으로 인식하도록 한다.
    부모 클래스(엔티티)에 필드를 선언하고 단순히 속성만 받아서 사용하고싶을 때 사용

  • @EntityListeners(AuditingEntityListener.class) : BaseTimeEntity 클래스에 Auditing 기능을 포함시킨다.

  • @CreatedDate : Entity가 생성되어 저장될 때 시간이 자동 저장된다!

  • @LastModifiedDate : 조회한 Entity의 값을 변경할 때 시간이 자동 저장된다!

  • @Column(updatable = false,nullable = false) : 혹시 모를 상황에 대비하여 생성일은 업데이트가 안되게, null은 허용하지 않게 한다.

2. Entity에서 상속하기

@Entity
public class Member extends BaseTimeEntity{
	// 엔티티 코드 작성..
}
  • 만들어 둔 BaseTimeEntity를 상속한다.

3. Application 클래스에 활성화 어노테이션 추가

@EnableJpaAuditing
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(MoodApplication.class, args);
    }

}
  • @EnableJpaAuditing : JPA Auditing 어노테이션들을 모두 활성화 시킨다.
profile
모든 것은 직접 경험해보고 테스트하자

0개의 댓글