1. 특징

    1. RuntimeException 으로 뭔가 잘못된 데이터가 바인딩 되었을때 발생하는 에러이다.
    2. SQL문이 잘못되었거나 Data가 잘못되었을경우
    3. DB 무결성 제약 조건을 깨뜨렸을 때 터지는 예외
  2. 예시

    1. 중복 키(Unique Key)위반
    User user = new User();
    user.setEmail("[email protected]"); //이미 DB에 존재하는 이메일
    userRepository.save(user); //DataIntegrityViolationException 발생
    
    1. 외래키(Foreign Key) 제약 위반
    //존재하지 않는 부서 ID로 직원 등록 시도
    Employee employee = new Employee();
    employee.setDepartmentId(999); // 존재하지 않는 부서 ID
    employeeRepository.save(employee); // 예외 발생
    
    
    1. NOT NULL 제약 위반
    Product product = new Product();
    product.setName(null); //name 필드가 not NULL인데 null입력
    productRepository.save(product); //예외 발생!
    
  3. 장점

    1. 명확한 오류 식별
      1. 데이터베이스 제약 조건 위반을 명확하게 알려줌
    2. 일관된 예외 처리
      1. Spring이 다양한 DB 벤더의 오류를 하나의 예외로 통합
      2. 어느 벤더인지 상관없이 동일한 방식으로 처리
    3. 안전한 데이터 관리
      1. 잘못된 데이터가 DB에 저장되는 것을 방지
      2. 데이터 일관성 유지에 도움