BACKEND/JAVA & SPRING
BaseTimeEntity.java란 ?
이-프
2023. 12. 19. 15:56
데이터를 논리삭제 하기 위해서 주로 공통된 BaseTimeEntity 클래스를 만들어서 사용한다. 공용으로 사용되는 BaseTimeEntity의 함수들과 칼럼들에 대해 공부하기 위해 작성한다. 🌱
그전에, 미리 물리삭제와 논리삭제에 대해 공부하는 것을 추천한다.
@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