65일차 TIL

김성훈·2021년 12월 22일
0

내일배움캠프 TIL

목록 보기
43/44
post-thumbnail

📢TMI📢

힘든 하루끝에 집앞에 거리를 서성이다~


✍TIL(Today I Learned)✍


@Service
@Component
@AllArgsConstructor
public class UserDelete {

    private final UserRepository userRepository;

    @Scheduled(cron = "0 0 22 * * *") // 매일 22시에
    public void deleteUser() {
         
         // 오늘 날짜에서 7일을 뺀 뒤 00시부터
        LocalDateTime startDatetime = LocalDateTime.of(LocalDate.now().minusDays(7), LocalTime.of(0,0,0));
        // 오늘 날짜에서 7일을 뺀 뒤 23시 59분 까지를
        LocalDateTime endDatetime = LocalDateTime.of(LocalDate.now().minusDays(7), LocalTime.of(23,59,59));
       
       
       //  그 시간들 사이에서 회원상태가 탈퇴인 사람을 찾음
        List<User> found = userRepository.findAllByStatusAndModifiedAtBetween(false,startDatetime,endDatetime);

       // 찾으면서 그 정보들을 삭제
        for (User user: found){
            userRepository.deleteById(user.getId());
        }

    }

}

OneTomany 연관관계 삭제하면서 딸린 정보 삭제

👁‍🗨TIF(Today I Feel) 👁‍🗨

오늘은 우리가 지향했던 논리적 삭제를 구현하는데에 힘을 썼다
저번에는 그냥 회원탈퇴 복구기능에만 집중을 했다면 이번에는 탈퇴하고 7일이 지나면 그 회원의 정보를 자동으로 삭제해주는 로직을 만들었다, 여기서 문제가 생겼었는데 회원 정보를 삭제하면서 그사람에 딸린 정보를 다 삭제 해야 하는데 우리가 설정했던 연관관계를 다 끊으면서 삭제를 해줘야 하기 때문에 힘들었지만 다행이 cascade 계단식 제거를 사용해서 딸린 정보들을 삭제할 수 있었다 스프링 스케쥴러를 사용해서 그 사람이 회원탈퇴를 하고 그 마지막 수정시간을 찾아서 일주일이 지났으면 삭제를 해준다, 확실히 스케쥴러를 사용하면서 편하다는 것을 느끼지만 한 편으로는 서버에 부하가 가는것도 걱정이 가기는 한다. 부하를 해결하기 위해 더 좋은 코드를 만들어야 할 거 같다.. 하여튼 이제 우리가 논리적 삭제를 지향했고 그것에 해당하는 로직을 구현했기 때문에 당당하게 말할 수 있을 거 같다!


📢 To-do list📢

1.이력서 써보기
2.잠 일찍 자기


<출처>

profile
"한 명이 걷는 천 걸음 보다 천 명이 함께 걷는 한 걸음이 성공의 시작이고 완성이다"

0개의 댓글