-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[6주차](김수환, 오형석, 김동하) #4
Comments
토비의 스프링 4장 예외 정리안좋은 예외처리
그렇다면 예외를 어떻게 다뤄야 할까? 예외의 종류와 특징예외는 크게 두가지로 나뉜다.
Checked Exception이 예외처리를 강제하는 것 때문에 위에 언급한 안좋은 예외처리들이 남발되고 있다. 예외처리 방법
catch(SQLException e){
. . .
throw DuplicateUserIdException(e);
}
JDBC의 한계스프링의 JdbcTemplate은 기계적인 throws선언이 등장하지 않도록 가능한 한 빨리 Unchecked Exception으로 전환하는 예외처리 전략을 따른다. JDBC는 자바 표준 JDK에서도 가장 많이 사용되는 기능 중 하나이다. 하지만 이러한 JDBC에도 한계가 있다.
따라서 해결하기 위해서는 DB전용 에러코드를 사용하는 방법이 있다. DAO 인터페이스 구현의 분리DAO를 굳이 따로 만들어서 사용하는 이유는 Data Access 로직을 다른 성격의 코드에서 분리해놓기 위해서다. public interface UserDao{
public void add(User user);
. . .
} 하지만 DAO에서 사용하는 데이터 기술으 API가 예외를 던지기 때문에 이렇게 사용할 수 없다. public void add(User user) throws SQLException; 그러나 이렇게 정의한 인터페이스는 다른 Data Access 기술로 전환하면 사용할 수 없다. DataAccess 예외 추상화와 DataAccessException 계층구조스프링은 자바의 Data Access 기술을 사용할 때 발생하는 예외들을 추상화해서 DataAccessException 계층구조 안에 정리해놓았다. (예시) 낙관적인 락킹
ORM 기술이 아니지만 JDBC 등을 이용해 낙관적인 락킹 기능을 수현했다고 해보자. |
The text was updated successfully, but these errors were encountered: