복붙노트

[SPRING] 스프링 CrudRepository 예외

SPRING

스프링 CrudRepository 예외

DB에 CRUD 작업을 처리하는 Spring Data CrudRepository가 있습니다.

@Repository
public interface IUserRepository extends CrudRepository<User, String> {

}

사용자는 내 DB의 사용자 테이블의 엔터티입니다. CrudRepository는 저장소에 다음 조작을 추가합니다.

문서에 설명 된 것처럼 delete 및 find 작업은 저장 작업이 예외를 throw하지 않는 동안 제공된 id가 null 인 경우 IllegalArgumentException을 던집니다.

문제는 CrudRepository의 javadoc이 이러한 작업에 의해 throw 된 다른 예외에 대해 언급하지 않는다는 것입니다. 예를 들어, 제공된 ID가 DB에 존재하지 않을 경우 delete (String ID) 연산이 EmptyResultDataAccessException을 던졌습니다.

save (User user) 조작의 javadoc에서는 (고유 필드와 외래 키에 대해) 하나의 데이터 무결성 제약 조건을 위반하는 새 사용자를 삽입하는 경우 어떤 예외가 발생하는지 명확하지 않습니다. 또한 새 사용자 또는 기존 사용자를 작성하는지 여부를 경고하지 않습니다. 새 사용자를 작성하거나 존재하는 경우이를 겹쳐 씁니다 (Insert + Update 조작).

엔터프라이즈 애플리케이션에서 나는 던져 넣을 수있는 예외를 잡을 수 있어야하고, 그 일은 javadoc에서 읽어야한다.

CrudRepository 예외에 대한 명확한 문서를 알고 있습니까?

고맙습니다

해결법

  1. ==============================

    1.Spring에는 예외 변환 메커니즘이 내장되어 있으므로 JPA 지속성 공급자가 throw하는 모든 예외가 @Repository로 주석 처리 된 (또는 구성된) 모든 bean에 대해 Spring의 DataAccessException으로 변환됩니다.

    Spring에는 예외 변환 메커니즘이 내장되어 있으므로 JPA 지속성 공급자가 throw하는 모든 예외가 @Repository로 주석 처리 된 (또는 구성된) 모든 bean에 대해 Spring의 DataAccessException으로 변환됩니다.

    네 가지 주요 그룹이 있습니다.

    즉, 모든 예외에 대한 문서를 찾을 수있는 이상적인 장소는 API 자체에 있으며 DataAccessException의 계층 구조를 살펴보아야합니다.

  2. from https://stackoverflow.com/questions/23325413/spring-crudrepository-exceptions by cc-by-sa and MIT license