프로젝트를 진행하면서 어떻게 해야 jpa로 자동으로 데이터베이스에 생성일이나 수정일을 넣을 수 있을까 찾아보다가 발견하여 정리한다.
JPA Auditing 을 이용하면 된다고 한다.
롬복을 이용할 것이니 참고!
@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은 허용하지 않게 한다.
@Entity
public class Member extends BaseTimeEntity{
// 엔티티 코드 작성..
}
@EnableJpaAuditing
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(MoodApplication.class, args);
}
}
@EnableJpaAuditing
: JPA Auditing 어노테이션들을 모두 활성화 시킨다.