throws SQLException이 의미없는 이유
SQLException
- mybatis이전에는 RuntimeException으로 바꿔치기해서 throw 하지도 않았었음
- Spring으로 넘어오면서 직접적으로 처리한 적 없음
- runtime 으로 바꾼적도없음, DataAccessException으로 바뀌기때문
DataAccessException
- throws를 안넣어도 SQLException이 발생하면...
- SQLException이 발생하면 mybatis 내부에서 Persistence Exception으로 매핑
- spring orm이 DataAccessException으로 포장
- DAE는 RuntimeException 이기때문에 서비스로 넘김
- 서비스에서 컨트롤러로 넘김
- 컨트롤러에서 throws가 없어도 핸들러어댑터에도 넘김
- 핸들러어댑터가 위빙되어있는 어드바이스가있는지 확인해서 위빙된곳으로 넘겨서 advice로 오는것
6.1 하지만 try-catch로 DataAccessException을 잡아준다면 컨트롤러단에서 처리가 됨