서비스가 처리할 수 없는 SQLException에 대한 의존을 제거하려면 어떻게 해야할까 

서비스가 처리할 수 없으므로 리포지토리가 던지는 SQLException 체크 예외를 런타임 예외로 전환해서 서비스 계층에 던지자. 이렇게 하면 서비스 계층이 해당 예외를 무시할 수 있기 때문에, 특정 구현 기술에 의존하는 부분을 제거하고 서비스 계층을 순수하게 유지할 수 있다. 

-> 런타입예외로 바꿔보자. 

 

 

catch (SQLException e){
    throw new MyDBException(e);

기존 예외를 꼭 포함해야한다. 

 

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

데이터베이스 오류에 따라서특정 예외는 복구하고 싶을 수 있다.

예를 들어서 회원가입시 db에 이미 같은 id가 있으면 ID뒤에 수자를 붙여서 새로운 id를 만들어야 한다고 가정해보자 

ID hello라고 가입시도 했는데, 이미 같은 아이디가 있으면 hello12345와 같이 뒤에 임의의 숫자를 붙여서 가입하는 것이다. 

 

badsqlGrammarException 

+ Recent posts