[Spring] JPA 생성, 변경 일시 자동생성 및 format 변경

    [Spring] JPA 생성, 변경 일시 자동생성 및 format 변경 알아보기

    자동생성 방법

    1. JPA 이벤트를 사용하여 자동 생성

    @EntityListeners(AuditingEntityListener.class)
    @Entity
    public class Member {
        ...
        @CreatedDate
        private LocalDateTime createdDate;
    
        @LastModifiedDate
        private LocalDateTime modifiedDate;
        ...
    }

    위와 같이 @CreatedDate와 @LastModifiedDate 어노테이션을 사용하여 엔티티 저장 및 수정 시각을 처리하도록 설정하면, createdDate와 modifiedDate 필드에 자동으로 값이 채워지게 됩니다.

    2. JPA EntityListener를 사용하여 자동 생성

    @EntityListeners(MyEntityListener.class)
    @Entity
    public class Member {
        ...
        private LocalDateTime createdDate;
    
        private LocalDateTime modifiedDate;
        ...
    }
    
    public class MyEntityListener {
    
        @PrePersist
        public void setCreatedDate(Object entity) {
            if (entity instanceof Member) {
                Member member = (Member) entity;
                member.setCreatedDate(LocalDateTime.now());
                member.setModifiedDate(LocalDateTime.now());
            }
        }
    
        @PreUpdate
        public void setModifiedDate(Object entity) {
            if (entity instanceof Member) {
                Member member = (Member) entity;
                member.setModifiedDate(LocalDateTime.now());
            }
        }
    }

    위와 같이 @PrePersist와 @PreUpdate 어노테이션을 사용하여 엔티티 저장 및 수정 시각을 처리하도록 설정하면, createdDate와 modifiedDate 필드에 자동으로 값이 채워지게 됩니다.

    format 변경방법

    @Getter
    @MappedSuperclass
    @EntityListeners(AuditingEntityListener.class)
    public abstract class BaseTimeEntity {
    	
    	@ApiModelProperty(value = "생성일시")
    	private String createdDate;
    	
    	@ApiModelProperty(value = "최종변경일시")
    	private String modifiedDate;
    
    	@PrePersist
    	public void onPrePersist() {
    		this.createdDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
    		this.modifiedDate = this.createdDate;
    	}
    	
    	@PreUpdate
    	public void onPreUpdate() {
    		this.modifiedDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
    	}
    }

    댓글

    Designed by JB FACTORY