#### 발생 원인:
- **타입 불일치**: 쿼리 결과에서 `employeesName` 컬럼은 문자열 타입인데, 해당 컬럼을 `int`로 처리하려고 시도하여 `SQLException`이 발생.
- **에러 메시지**:
1. ResultSet.getInt(employeesName) java.sql.SQLException: Out of range value for column 'employeesName': value 박현아
- **문제**: `employeesName` 컬럼의 값이 실제로는 문자열(`"박현아"`)인데, 이를 `int`로 변환하려고 시도했기 때문에 타입 불일치 오류가 발생.
#### 영향 범위:
- **데이터 매핑 오류**: `employeesName` 값을 `int`로 처리하려고 시도했기 때문에 데이터 매핑이 올바르게 처리되지 않음. 이는 `employeesName`을 사용하는 모든 로직에서 오류를 발생시킴.
- **응답 실패**: 쿼리 결과를 처리하는 과정에서 `SQLException`이 발생하여 애플리케이션이 예상대로 동작하지 않음.
- **타입 불일치**: 데이터베이스 컬럼의 타입과 Java 모델 객체의 타입이 일치하지 않아서, 데이터를 가져오는 과정에서 오류가 발생.
#### 주요 프로세스 영향:
1. **데이터 조회 실패**:
- `ResultSet.getInt()` 메소드에서 `employeesName` 값을 `int`로 읽으려 했지만, 컬럼이 문자열이므로 `SQLException`이 발생. 이로 인해 데이터 조회가 실패함.
2. **잘못된 모델 매핑**:
- 모델 객체에서 `employeesName` 필드를 `int`로 선언한 경우, 데이터베이스에서 문자열 값을 올바르게 매핑할 수 없어서 오류가 발생.
3. **응답 지연**:
- 쿼리 실행 중 오류가 발생하여 응답을 제대로 반환할 수 없게 되고, 클라이언트에 오류 응답이 전송됨.
#### 해결 방안:
1. **모델 수정**:
- `employeesName` 컬럼의 값을 올바르게 처리할 수 있도록 모델 객체에서 `employeesName` 필드를 `String` 타입으로 변경.
- **수정된 코드**:
private String employeesName; // String 타입으로 수정
2. **타입 일치 검토**:
- 데이터베이스 컬럼 타입과 Java 모델 타입이 일치하는지 항상 확인해야 하며, 쿼리 결과를 매핑할 때 타입 불일치가 발생하지 않도록 유의.
- 문자열 값을 `int`로 변환하려고 할 경우, 해당 컬럼이 실제로 숫자 값임을 확인한 후 변환해야 합니다.
3. **테스트 및 검증**:
- 모델 타입을 변경한 후, 데이터베이스에서 쿼리를 실행하고 모델 객체에 데이터를 제대로 매핑할 수 있는지 테스트.
- 다양한 문자열 데이터를 테스트하여 오류가 발생하지 않는지 확인.
4. **로깅 및 예외 처리**:
- `SQLException`이 발생할 가능성이 있는 경우, 적절한 예외 처리와 로깅을 추가하여 문제 발생 시 빠르게 원인을 추적할 수 있도록 함.
- 예를 들어, `SQLException`을 잡아서 상세한 오류 메시지를 로깅할 수 있습니다.
5. **쿼리 최적화**:
- 쿼리에서 필요한 컬럼만 선택적으로 조회하거나, 데이터 타입에 맞는 필드를 사용하여 쿼리 성능을 최적화할 수 있습니다.
#### 결론:
`employeesName` 컬럼의 값을 `int` 타입으로 처리하려고 시도하여 발생한 `SQLException`을 해결하기 위해, Java 모델 객체에서 `employeesName` 필드를 `String` 타입으로 변경해야 합니다. 이를 통해 데이터베이스에서 반환되는 문자열 값을 올바르게 처리할 수 있습니다. 타입 일치를 확인하고, 예외 처리를 적절히 적용하여 데이터 조회 오류를 예방해야 합니다.
'개발 > JAVA' 카테고리의 다른 글
에러 노트: NullPointerException - 포인트 값이 없을 경우 (0) | 2024.11.27 |
---|---|
Variable 'userService' might not have been initialized - 오류 (0) | 2023.08.13 |
열거형 (0) | 2023.02.23 |
생성자와 세터의 차이 (0) | 2023.02.10 |
의존성 역전 원칙 (0) | 2023.01.27 |