DATABASE/SQL

DataAccessException

♥dahye♥ 2017. 12. 4. 18:06



DataAccessException


* 일관된 예외처리를 하기 위함.


* SQLException이나 HibernateException등과 같은 특정 기술에 의존적인 예외를 던지지 않음.


* 모든 DAO Exception은 org.springframework.dao.DataAccessException의 서브 클래스.


* 데이터 접근 인터페이스가 구현에 의존적인 예외가 아닌 스프링의 일반적인 예외를 던짐으로서, 

   persistence 구현에 결합되는 일을 방지.


* RuntimeException이기 때문에 비검사 예외(unchecked Exception)에 속함.

   -> DAO 에서 던진 예외를 코드에서 반드시 처리하지 않아도 된다는 의미.

   -> 검사 예외 (checked Exception)은 과도한 catch나 throws절을 불러 코드를 난잡하게 할 수 있다는 

         스프링의 일반적인 철학을 따르는 것.


* NestedRuntimeException의 서브클래스.

   -> 항상 NestedRuntimeException의 getCause()메서드를 통해 루트 예외인 Exception을 사용할 수 있다.


* Spring은 DAO 지원에 관한 특정 기술에 대한 예외들을 인식하며, 각 데이터베이스 제품의 에러 코드까지 인식.


*  자신의 예외 분류 체계에 있는 좀 더 특정한 예외중의 하나를 사용하여 다시 던질 수 있다.


---------------------------------------------------------------------------------------------------------------------


** CleanupFailureDataAccessException

     => 성공적으로 작동한 후 데이터베이스 자원을 반환할 때 발생하는 경우 (Connection 반환 등)


** DataAccessResourceFailureException

     => 데이터베이스 연동 실패 등 접근 실패


** DataIntegrityViolationException

     => 유일키 제약 (Unique Constraint) 위반과 같은 정합성 위반이 삽입 (Insert) / 갱신 (Update)의 결과로 

           발생한 경우


** DeadlockLoserDataAccessException

     => 현재의 프로세스가 교착상태(deadlock)에 빠진 경우


** IncorrectUpdateSemanticsDataAccessException

     => 원하는 수보다 많은 레코드를 갱신하는 등 갱신 작업에 있어서 의도하지 않은 어떤 일이 발생하는 경우. 

             @ 트랜잭션이 롤백 되지 않음!


** InvalidDataAccessApiUsageException

     => 실행되기 전에 컴파일 되어야 할 질의문의 컴파일에 실패하는 등 데이터 접근 자바 API를 잘못 사용하는 경우


** InvalidDataAccessResourceUsageException 

 
 => 관계형 데이터베이스 접근을 위해 잘못된 SQL 문법을 사용하는 등 자원에 대한 접근을 잘못하는 경우
 
 ** 
OptimisticLockingFailureException
 

 => 낙관적 잠금(optimistic locking)에 실패한 경우. 이 예외는 ORM 툴이나 커스텀 DAO 구현체에 의해 발생된다.
 
      * 낙관적 잠금(optimistic locking)
 
       동일한 데이터에 정확히 동시에 접근하는 일이 발생할 확률이 매우 낮을 것이라고 낙관하여 배타적 잠금을 하지 않는, 즉 데이터에 대한 동시 접근을 허용하는 정책
 
 ** TypeMismatchDataAccessException
 
 => String을 데이터베이스의 숫자 컬럼에 삽입하려고 하는 등 자바 타입과 데이터 타입이 일치하지 않는 경우
 
 ** UncategorizedDataAccessException
 
 => 무엇인가 잘못됐지만 좀 더 구체적으로 판별할 수 없는 경우



-- 원본 :  http://blog.naver.com/archy712/37944946


반응형

'DATABASE > SQL' 카테고리의 다른 글

오라클 TABLE, FUNCTION, PROCEDURE 검색  (0) 2017.12.08
WHERE절 우선순위  (0) 2017.12.05