Devin.KR

DB 연결과 일관된 오류

파일 저장소를 JDBC로 교체하고 입력 검증·수정·삭제 API를 구현합니다.

진도 0%

레슨

  1. JDBC 저장소와 매개변수

    JdbcTemplate과 바인딩으로 SQL·연결 자원을 관리합니다.

  2. 입력 검증

    DTO 검증과 업무 검증의 위치를 구분합니다.

  3. 예외와 오류 계약

    ControllerAdvice로 일관된 오류 코드를 반환합니다.

  4. 수정·삭제와 회귀 테스트

    HTTP 계약과 저장 결과를 함께 검증합니다.

DB 연결과 일관된 오류 미션

앞 모듈의 결과를 이어서 DB 기반 CRUD와 입력 오류 처리를 완성합니다.

요구사항

  • 기존 조회·추가 계약을 유지하며 JDBC 저장소로 교체합니다.
  • PATCH /books/{id}, DELETE /books/{id}와 통일된 오류 DTO를 구현합니다.
  • 대여 이력 있는 도서 삭제 정책을 명세에 추가합니다.
  • PATCH는 수정 가능한 유일한 필드 title을 필수로 받으며 누락·null은 400입니다. 길이는 UTF-16 코드 단위 200 이하입니다.
  • 기본 설정은 JDBC를 선택하고 catalog.path 명시 시 이전 파일 저장소 테스트를 유지합니다. MAX(id)+1의 단일 JVM·삭제 후 ID 재사용 한계를 문서화합니다.

완료 기준

  • 기존 84개와 JDBC API 11개, 누적 95개 테스트의 실패·오류·건너뜀 0을 report.py로 확인합니다.
  • 검증 실패 시 DB 변경 0건이며 SQL 모양의 제목은 문자열 그대로 저장됩니다.
  • 삭제 204·없는 도서 404·이력 있는 도서 삭제 409와 비밀 정보 없는 500을 확인합니다.
./mvnw test
미션 시작 코드
모범 답안모범 답안 내려받기

검토 기준

  • 앞 단계의 계약과 테스트를 유지하며 변경 이유를 설명합니다.
  • 정상·경계·실패 경로의 근거와 재현 절차를 제출합니다.