programing

What Runtime예외적으로 Spring Crud Repository가 던질 수 있습니까?

lovejava 2023. 9. 11. 21:20

What Runtime예외적으로 Spring Crud Repository가 던질 수 있습니까?

이 봄 데이터가 있습니다.CrudRepository이것은 DB 상에서 CRUD 작업을 처리합니다.

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

}

User는 내 DB의 Entity of a User 테이블입니다.CrudRepository는 저장소에 다음 작업을 추가합니다.

  • delete(String ID)
  • findOne(String ID)
  • save(User user)

문서에 명시된 대로 삭제 및 찾기 작업은 다음과 같이 처리됩니다.IllegalArgumentException저장 작업이 예외를 허용하지 않는 동안 주어진 ID가 null인 경우.

문제는 CrudRepository의 javadoc이 이러한 작업에 의해 발생하는 다른 예외에 대해 언급하지 않는다는 것입니다.예를 들어, 그것은 그것을 말하지 않습니다.delete(String ID)작업이 일을 일으킵니다.EmptyResultDataAccessException제공된 ID가 DB에 없는 경우.

자바독에서.save(User user)operation 고유 필드 및 외부 키에 대해 하나의 데이터 무결성 제약을 위반하는 새 User를 삽입할 경우 어떤 예외가 발생하는지 명확하지 않습니다.또한 사용자를 새로 쓰는지, 아니면 기존 사용자를 쓰는지에 대해서도 경고하지 않습니다. 새 사용자를 만들거나 기존 사용자가 있으면 덮어씁니다(따라서 삽입 + 업데이트 작업입니다).

엔터프라이즈 애플리케이션에서 나는 작업이 허용할 수 있는 모든 예외를 포착할 수 있어야 하며 작업의 자바독에서 이에 대해 읽어야 합니다.

당신은 어떤 명확한 문서를 알고 있습니까?CrudRepository예외?

Spring에는 예외 변환 메커니즘이 내장되어 있어 JPA 지속성 프로바이더가 던지는 모든 예외가 Spring의 DataAccess로 변환됩니다.예외 - @Repository(또는 구성됨)로 주석이 달린 모든 콩에 해당합니다.

크게 4개의 그룹이 있습니다.

  • 비일시적 데이터 액세스Exception(예외) - Exception(예외)의 원인을 수정하지 않으면 동일한 작업의 재시도가 실패하는 예외입니다.예를 들어 존재하지 않는 id를 전달하면 id가 데이터베이스에 존재하지 않는 한 실패합니다.

  • 복구 가능한 데이터 액세스 가지 복구 단계 후에 예외(복구 가능한 예외) - 이전의 예외와 "반대"입니다.API 문서에서 더 자세한 정보 제공

  • ScriptException - SQL 관련 예외(예: 형식이 좋지 않은 스크립트를 처리하려고 할 때)입니다.

  • 임시 데이터 액세스예외 - 데이터베이스에 대한 제한 시간이 몇 초 후 재시도하는 등 명시적인 단계 없이 복구가 가능한 경우 예외입니다.

즉, API 자체에 있는 모든 예외에 대한 문서를 찾을 수 있는 이상적인 장소는 DataAccess 계층을 거치는 것입니다.예외입니다.

상위 예외 DataAccess를 캡처합니다.예외.

import org.springframework.dao.DataAccessException;

enter image description here

언급URL : https://stackoverflow.com/questions/23325413/what-runtimeexception-can-spring-crudrepository-throw