DataAccessException
SQLException
을 전환하는 용도로만 만들어진 건 아니다.
데이터 액세스를 위한 표준 기술
JDBC
외에도 몇개 더 있음JDO
나 JPA
는 JDBC 와 마찬가지로 자바의 표준 퍼시스턴스 기술
iBatis
JDBC
를 기반으로 성격도 비슷하지만 사용 방법과 API, 발생하는 예외가 다르다.<aside> ☝🏻
스프링은 왜 기술에 독립적인 예외를 정의하고 사용하게 하는걸까.
</aside>
DAO
인터페이스와 구현의 분리DAO
분리하기DAO
는 전략 패턴을 적용해 구현 방법을 변경해서 사용할 수 있음DAO
를 사용하는 쪽은 DAO
내부에서 어떤 데이터 액세스 기술을 사용하는지 신경쓰지 않아도 된다.기술에 독립적인 이상적인
DAO
인터페이스
public interface UserDao{
public void add(User user);
...
}
add()
메서드라면 SQLException
을 던질 것throws
에 넣을 수 없다.
public void add(User user) throws SQLException;