CODING/스파르타 내일배움캠프 TIL

34_문자열 다루기 기본_스탠다드 데이터베이스 연관관계 매핑_일정관리 과제 Lv 5 구현완료_25.2.3(월)

codingTrip 2025. 2. 3. 21:37

코트카타

36) 문자열 다루기 기본

나의 풀이

class Solution {
    public boolean solution(String s) {
        boolean answer = false;
        if(s.length()==4 || s.length()==6){
            if(s.matches("\\d+") ){
                answer = true;
            }
        }
        return answer;
    }
}

기본값을 false로 두고

문자열 s의 길이가 4이거나 6일 때

정규식으로 숫자일 경우에만 true를 갖도록 했다.

 

다른 분들의 풀이

class Solution {
  public boolean solution(String s) {
      if(s.length() == 4 || s.length() == 6){
          try{
              int x = Integer.parseInt(s);
              return true;
          } catch(NumberFormatException e){
              return false;
          }
      }
      else return false;
  }
}

출처:https://school.programmers.co.kr/learn/courses/30/lessons/12918/solution_groups?language=java

try catch문을 사용하신 점이 인상적이었다.

레벨이 올라가면서 점점 다양한 것 활용을 도전해봐야겠다.


스탠다드반 세션

[Spring 5기] 데이터베이스 연관관계 매핑

출처 : 스탠다드반 세션

아직 JPA를 공부하지 않아서 다음에 복습해야 되겠다.


일정관리 과제

도전

Lv 5. 예외 발생 처리

선택한 일정 정보를 조회할 수 없을 때 예외가 발생합니다.

 - 잘못된 정보로 조회하려고 할 때

 - 이미 삭제된 정보를 조회하려고 할 때 - soft delete 사용

테이블에 deleted 컬럼 추가 -> entity 클래스에 deleted 필드 추가

-> 삭제 시, delete문 대신 update문 사용(deleted 컬럼 값을 false -> true로 수정)

-> 조회 시, deleted = false인 값만 조회

 

2025-02-03T10:08:51.582+09:00 ERROR 2401 --- [schedule] [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0] with root cause
    @Override
    public ScheduleResponseDto findScheduleById(Long scheduleId) {

        try{
            boolean deleted = scheduleRepository.validateDeleted(scheduleId);

            if (deleted){
                throw new ApplicationException(ErrorMessageCode.NOT_FOUND,
                        List.of(new ApiError("deleted", "이미 삭제된 정보입니다. 다시 입력하세요")));
            }

            Schedule schedule = scheduleRepository.findScheduleByIdOrElseThrow(scheduleId);
            
            return new ScheduleResponseDto(schedule);
        } catch (EmptyResultDataAccessException e) {
            throw new ApplicationException(ErrorMessageCode.NOT_FOUND,
                    List.of(new ApiError("id", "잘못된 정보입니다. 다시 입력하세요")));
        }
    }

Spring 에서 queryForObject()을 사용할 때,

결과값이 1 이어야 하는데 실제 결과값은 0 일때 다음과 같은 에러가 발생한다.

따라서 try- catch문으로 감싸서 예외처리 했다.

출처 : https://coderanch.com/t/468501/frameworks/handling-simpleJdbcTemplate-error

 

처음 막막했던 것에 비해

내가 생각했던 나의 한계에 비해

더 도전했고, 노력했다.

 

그래서 더 스스로가 자랑스러운 시간이었다.