본문 바로가기

웹 프로그래밍/스프링

스프링 예외 처리

체크 예외와 인터페이스

서비스 계층은 순수하게 유지

리포지토리가 던지는 체크 예외를 런타임 예외로 전환해서 서비스계층에 던지면 됨

인터페이스를 도입

인터페이스의 구현체가 체크 예외를 던지려면, 인터페이스 메서드에 먼저 체크예외를 던지는 부분이 선언돼 있어야함

-> 인터페이스가 순수하지 못하고 종속적이게 됨

 

데이터 접근 예외 직접 만들기

리포지토리에서 아이디가 중복이라 예외를 서비스 계층에 던지면 서비스 계층은 복구를 시도 하려는데 이러면 또

서비스 계층이 특정 기술에 의존하게돼버림 -> 예외를 변환해서 던질것(직접만든 MyDuplicateKeyException)

 

 이렇게 하더라도 개발자가 모든 오류코드에 대해서 일일이 잡아줘야함 그리고 데이터베이스 마다 다름

-> 스프링이 데이터 접근 계층에 대한 수십가지 예외를 정리해서 일관된 예외 계층을 제공

 

스프링 예외 추상화 이해

최상위 예외는 DataAccessException이며 RuntimeException을 상속 받았고 2가지로 구분하는데

Transient와 NonTransient로 나뉨

Transient 하위 예외는 반복했을때 성공할수 있는 예외

NonTransient 하위 예외는 반복했을때 절대 안되는 예외

 

스프링이 제공하는 예외 변환기

스프링은 데이터베이스에서 발생하는 오류 코드를 스프링이 정의한 예외로 자동으로 변환해주는 변환기를 제공

(SQLErrorCodeSQLExceptionTranslator)

 

JDBC 반복 문제 해결 - JdbcTemplate

리포지토리에서 JDBC를 사용하기 때문에 생기는 반복문제(커넥션 받아오고 닫고 등등)

-> JdbcTemplate이라는 템플릿 제공(템플릿 콜백 패턴)

 

 

 

 

'웹 프로그래밍 > 스프링' 카테고리의 다른 글

JWT  (0) 2024.02.13
REST  (0) 2024.01.18
자바 예외 이해  (0) 2023.06.03
스프링 데이터 접근 핵심 원리  (0) 2023.05.08
스프링 MVC(2) 검증 정리  (0) 2023.04.14