국세청 OpenAPI를 통한 사업자 진위 확인 기능을 구현하는 과정에서,
company
및 employee
테이블에 중복 Insert가 발생하거나
로직과 맞지 않는 데이터가 삽입되는 문제가 있었다.
과거 로직에서는 OpenAPI 응답의 valid=01
(유효한 사업자) 결과가 나오면:
company
테이블에 즉시 INSERTemployee
테이블에도 직원 등록 INSERT을 수행했다.
중복 키 충돌
DuplicateKeyException
발생 로직 불일치
employee
테이블에는 더 이상 데이터를 넣지 않기로 했으나,데이터 무결성 위험
insertVerifiedCompany()
, insertEmployeeIfNotExists()
삭제findCompanyInfoByCompanyId(Long companyId)
추가valid=01
이라도 DB에서 조회만 수행IllegalStateException
→ 클라이언트에 404 반환companyId
: String → Long 변경 openedDate
: @JsonFormat("yyyyMMdd")
적용 → 파싱 일관성 보장 String.valueOf()
로 변환 후 전송 data
배열 존재 여부 체크 → NPE 방지 Service에서 내부 예외로 매핑하고, Controller에서 이를 HTTP 응답 코드로 다시 매핑한다.
수정된 로직을 반영한 뒤, Postman을 통해 실제 호출을 테스트했다.
• 요청 시 companyId, ceoName, openedDate를 전달
• 응답으로 companyName, ceoName, openedDate, valid=true가 정상 반환됨
이번 트러블슈팅을 통해, 단순히 “동작하는 코드”가 아닌
로직과 일치하면서 데이터 무결성을 지킬 수 있는 구조가 얼마나 중요한지 배웠다.