BACKEND/JAVA & SPRING

BaseTimeEntity.java란 ?

이-프 2023. 12. 19. 15:56

데이터를 논리삭제 하기 위해서 주로 공통된 BaseTimeEntity 클래스를 만들어서 사용한다. 공용으로 사용되는 BaseTimeEntity의 함수들과 칼럼들에 대해 공부하기 위해 작성한다. 🌱

그전에, 미리 물리삭제와 논리삭제에 대해 공부하는 것을 추천한다.

https://for-if.tistory.com/59

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

    @CreatedDate
    private LocalDateTime createdAt;

    @Column(insertable = false)
    @LastModifiedDate
    private LocalDateTime updatedAt;

    @Column(insertable = false)
    private LocalDateTime deletedAt;

    protected void delete(LocalDateTime currentTime) {
        if (deletedAt == null) {
            deletedAt = currentTime;
        }
    }

    public boolean isDeleted() {
        return deletedAt != null;
    }

    protected void restore() {
        deletedAt = null;
    }
}
  • @Column(insertable = false)

    엔티티 저장시 이 필드도 같이 저장한다. false로 설정하면 데이터베이스에 저장하지 않는다. 읽기 전용일때 사용한다.

  • delete(LocalDateTime currentTime)

    데이터를 논리삭제하여, deletedAt 칼럼에 삭제시간을 추가한다.

  • isDeleted()

    데이터가 논리삭제 되었는지 확인하는 방법

  • restore()

    논리삭제된 데이터를 복구한다.

🔗 참고 url

https://velog.io/@readnthink/Hard-delete에서-Soft-delete-구현해보기


Uploaded by N2T