오답노트 및 하다 막힌 부분/Spring

로그인 갱신시간

Dr.Mlem 2024. 11. 12. 15:05

작업이 수행된 시간과 loginDate의 시간 차이에 주목

@Override
public Member login(Member input) throws Exception {
Member output = null;

    try{
        output = memberMapper.login(input);

        if(output==null){
            throw new Exception("아이디랑 비번은 기억해야지 서비스라는 것을 쓸 수 있다 맨이야");
        }
    }catch(Exception e){
        log.error("Member 데이터 조회에 실패했습니다.", e);
        throw e;
    }

    // 데이터 조회에 성공했다면 마지막 로그인 시각을 갱신. 
    try{
        int rows = memberMapper.updateLoginDate(output);

        if(rows == 0){
            throw new Exception("존재하지 않는 회원에 대한 요청이지롱");
        }
    }catch(Exception e){
        log.error("로그인 시각 갱신에 실패해버리고 말아부렸엉....", e);
        throw e;
    }

    return output; // 이 값은, db에 로그인한 시간을 갱신하기 전에 가져온 값이 있기 때문에, 지금 바로 이전의 로그인한 시각 정보를 가지고 있게 된다.
}

서비스에서의 코드 진행을 보면,

일단 순차적으로 진행하면서 로그인 시간을 업데이트 하고

output 리턴을 하긴 했으나,

그 output에 업데이트된 로그인 시간을 집어넣지는 않았기 때문에,

결국 출력되는 로그인 시간은 업데이트가 되기 전의 로그인 시간이 된다.