1. Mapping 불일치
- PostMapping 메서드에 GET 요청이 들어올 경우 : 405 에러 코드 출력
- Method Not Allowed

Solution
- View와 Controller를 모두 체크 : Business 파악 후 올바르게 URI 또는 method 수정
- POST : DB에 데이터를 작성할 때에 사용 (Insert, Update, Delete)

2. Query 오류
- 탐색 인수 개수의 차이, 이름 인식 불가, DB 내 탐색 불가 등의 이유로 에러 발생 가능
- 500 에러 코드 출력 : Internal Server Error
1. DB 참조 오류
- 쿼리문 내의 테이블 컬럼명 불일치


Solution
- View에 작성한 name, Repository에서 작성한 쿼리 내 name, DB 테이블의 name을 전부 비교 후 일치시켜야 함
- dummy data 활용 시, insert문 내의 테이블 컬럼명도 일치시켜야 데이터가 정상적으로 삽입



2. 쿼리 문법 오류
- 쿼리 문법을 이상하게 작성했을 경우
- SQL Syntax Error 출력

Solution
- Query 문법 오류 : Repository 확인
- 올바른 문법으로 다시 작성


3. 잘못된 데이터 참조
- 쿼리 문법 오류, 다른 테이블 참조 등으로 가져올 데이터 구조가 맞지 않을 경우

Solution
- Repository, DB 테이블, View를 모두 비교
- Repository : Query문 확인 후 제대로 테이블 정보를 가져오는 지 확인
- DB : 테이블 컬럼명, JPA로 담을 클래스 내의 구조가 Query 문으로 받아오는 데이터와 동일한 구조인지 확인
- View : 메서드를 통해 받아오는 model의 속성값(컬럼명)을 제대로 입력하였는지 확인

3. 잘못된 URI 요청
- 서버에서 정해두지 않은 URI로 GET 요청을 시도한 경우 : Client가 시도한 오류
- 404 오류 코드 출력


Solution
- 예외 처리 : Exception 종류를 모아서 다른 페이지로 연결시키도록 유도
- Error 페이지 : 404 Not Found 등 출력
- 에러 메시지(스크립트) 처리 후 메인 홈페이지로 강제 리다이렉트
- 더욱 많은 링크 제공 : 리다이렉션을 사용하여, 다른 링크를 입력하였더라도 올바른 페이지로 이동시킬 수 있도록 유도
- UX 상향 (User Experience)
4. DI (Dependency Injection) 부재
- Controller, Service, Repository 간에 DI 부재
- 생성자의 부재
- IoC는 가능하나, 내부 멤버가 null : 500 에러 코드 출력
- Annotation의 부재로 인한 컴포넌트 스캔 불가
- IoC도 불가 : 서버 실행 불가


Solution
- 각 Controller, Service, Repository의 Annotation 확인

- 생성자 확인 : 컴포지션

5. 트랜잭션 오류
- Write 동작 시 (Insert, Update, Delete) 트랜잭션 미발동으로 인한 오류

Solution
- Service 확인 : Write 동작을 수행하는 메서드에는 @Transactional 필수 포함
- 트랜잭션 추가 : 수행 중 오류 발생 시 데이터 rollback, 정상 수행 시 commit 수행

6. Form 태그 내 버튼
- form 태그 내의 버튼 타입을 설정하지 않으면 기본 타입이 submit으로 설정
- 다음과 같은 경우, test 버튼을 눌러도 해당 내역이 삭제됨


Solution
- 버튼의 기능을 수행하고 싶으면 type 직접 지정 : type=button
Share article