0721 학습 정리
✅ Spring Boot - API 예외 처리 (전역 예외 처리)
1. 전역 예외 처리 클래스 생성
@ControllerAdvice: 예외를 전역적으로 처리하는 클래스에 작성.
@ExceptionHandler: 특정 예외 클래스에 대한 예외 처리 메서드 정의.
@ExceptionHandler(MemberException.class)
public ResponseEntity<?> handleClientException(MemberException e, HttpServletRequest request) {
}
- 입력값 검증 예외는
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 구문 제거 → 전역 예외 처리 활용
@Valid와 BindingResult로 입력 검증
- 계정명 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. 연습문제
SELECT * FROM USERS WHERE USERNAME = 'pikachu';
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 사용법을 익힘.