TIL - 20250721

juni·2025년 7월 21일

TIL

목록 보기
70/315

0721 학습 정리


✅ Spring Boot - API 예외 처리 (전역 예외 처리)

1. 전역 예외 처리 클래스 생성

  • @ControllerAdvice: 예외를 전역적으로 처리하는 클래스에 작성.
  • @ExceptionHandler: 특정 예외 클래스에 대한 예외 처리 메서드 정의.
@ExceptionHandler(MemberException.class)
public ResponseEntity<?> handleClientException(MemberException e, HttpServletRequest request) {
    // ErrorResponse 객체로 응답
}
  • 입력값 검증 예외는 MethodArgumentNotValidException으로 처리.

2. 사용자 정의 예외 클래스

  • RuntimeException을 상속한 MemberException 생성.
  • 에러코드(ErrorCode) 열거형(enum)을 통해 일관된 메시지 및 상태코드 관리.
public class MemberException extends RuntimeException {
    private int status;
    private String errorName;
    ...
}

3. 에러 응답 객체 설계

@Builder
public class ErrorResponse {
    private LocalDateTime timestamp;
    private int status;
    private String error;
    private String message;
    private String path;
}
  • 클라이언트에게 일관된 형태로 에러 응답 전송 가능

4. Member API 컨트롤러 개선

  • 기존 try-catch 구문 제거 → 전역 예외 처리 활용
  • @ValidBindingResult로 입력 검증
  • 계정명 10자 초과 시 에러 발생: ACCOUNT_TOO_LONG

✅ Spring Boot - 비즈니스 로직 (서비스 계층)

MemberService에서 로직 위임

  • 회원 개별 조회 시 예외 발생 가능성 처리 포함
  • account.length() > 10이면 예외 발생
  • 회원 정보가 null이면 MEMBER_NOT_FOUND 예외 발생

✅ SQL - SELECT 기본 문법

1. SELECT 문 기본 구조

SELECT 컬럼명 FROM 테이블명;
SELECT * FROM USERS;
  • 특정 컬럼만 조회:
SELECT USERNAME, EMAIL FROM USERS;

2. DISTINCT

  • 중복 제거
SELECT DISTINCT POST_TYPE FROM POSTS;

3. 별칭 지정 (AS)

SELECT USERNAME AS "사용자 이름", EMAIL AS 이메일 FROM USERS;

4. 문자열 연결 (||)

SELECT USERNAME || '님 환영합니다!' AS 인사말 FROM USERS;

5. WHERE 조건절

  • 비교 연산자: =, <>, >, <, BETWEEN, IN, LIKE, IS NULL
SELECT * FROM USERS WHERE USER_ID <> 1;
SELECT * FROM USERS WHERE USERNAME LIKE 'p%';
SELECT * FROM USERS WHERE REGISTRATION_DATE BETWEEN TO_DATE('2022-01-01', 'YYYY-MM-DD') AND TO_DATE('2022-12-31', 'YYYY-MM-DD');

6. 연습문제

  • 회원 이름 'pikachu' 조회:
SELECT * FROM USERS WHERE USERNAME = 'pikachu';
  • 2023년 게시물 조회:
SELECT * FROM POSTS WHERE CREATION_DATE BETWEEN TO_DATE('2023-01-01', 'YYYY-MM-DD') AND TO_DATE('2023-12-31', 'YYYY-MM-DD');
  • 카카오프렌즈 사용자 조회:
SELECT USERNAME, EMAIL FROM USERS WHERE USER_ID IN (1,2,3,4,5,6,7,8);
  • '#먹스타그램'이 포함된 게시물:
SELECT POST_ID, CONTENT FROM POSTS WHERE CONTENT LIKE '%#먹스타그램%';

✅ 요약

  • Spring Boot에서 전역 예외처리를 통해 코드 간결성과 유지보수성을 향상시킴.
  • 사용자 정의 예외, 에러 코드 enum, 에러 응답 객체 설계로 표준화된 에러 응답 제공.
  • SQL SELECT 문법을 통해 다양한 조건과 출력형식을 설정할 수 있음.
  • 연습 문제를 통해 WHERE, BETWEEN, IN, LIKE 사용법을 익힘.

0개의 댓글