01.07 TIL

무너·2025년 1월 7일
  1. 탈퇴 시 modifiedAt을 update하는 것으로 탈퇴일 저장

  2. BaseEntity에서 modifedAt을 protected로 선언
    User의 deleteSoftly 메서드에서 this.moifiedAt = LocalDateTime.now()로 구현

    // BaseEntity
   
    @CreatedDate
    @Column(updatable = false)
    private LocalDateTime createdAt;

    @LastModifiedDate
    protected LocalDateTime modifiedAt;
    
    // User
       
    public void deleteSoftly() {
        this.modifiedAt = LocalDateTime.now();
    }
  1. 이 방법은 편하지만 자식클래스에서 자유롭게 수정이 가능하여 캡슐화 위반
    modifiedAt이 잘못 수정될 위험이 있음

  2. 따라서 BaseEntity에 삭제 관련 메서드를 추가하여 변경 로직을 캡슐화
    modifiedAt 변경을 제한하여 불필요한 수정 방지

    // BaseEntity
   
    @CreatedDate
    @Column(updatable = false)
    private LocalDateTime createdAt;

    @LastModifiedDate
    private LocalDateTime modifiedAt;

    public void markDeletedAt() {
        this.modifiedAt = LocalDateTime.now();
    }
    
    // User
       
    public void deleteSoftly() {
        markDeletedAt();
    }
profile
공부 기록📝

0개의 댓글