아래 글은 스프링 프레임 워크 첫걸음 책을 기반하여 작성한 글입니다.
이번 장부터는 ch1 ~ ch8까지 공부한 내용을 토대로 웹 애플리케이션을 만들어 볼 것이다.
만들 웹은 'OX 퀴즈' 애플리케이션이다.
이번 장에서는 기능을 설명하고 데이터 베이스 및 프로젝트를 생성하겠다.
9-1 애플리케이션 설명
(1) 기능 목록
작성할 기능은 아래와 같다.
No | 기능 | 설명 |
1 | 등록 기능 | 퀴즈를 등록한다. |
2 | 갱신 기능 | 등록된 퀴즈를 갱신한다. |
3 | 삭제 기능 | 등록된 퀴즈를 삭제한다. |
4 | 목록 표시 기능 | 등록된 퀴즈의 목록을 표시한다. |
5 | 게임 기능 | 등록한 퀴즈를 무작위로 표시하고 답한다. |
URL에 대한 역할은 아래와 같다.
No | 역할 | HTTP 메서드 | URL |
1 | 퀴즈 목록을 표시한다. | GET | /quiz |
2 | 등록 처리를 실행한다. | POST | /quiz/insert |
3 | 갱신 화면을 표시한다. | GET | /quiz/{id} |
4 | 갱신 처리를 실행한다. | POST | /quiz/update |
5 | 삭제 처리를 실행한다. | POST | /quiz/delete |
6 | 퀴즈 화면을 표시한다. | GET | /quiz/play |
7 | 퀴즈 답을 체크한다. | POST | /quiz/check |
* 참고
- GET 메서드: 브라우저에서 웹 서버로 값을 전달할 때 URL 뒤에 값을 더해 보내는 방식.
- POST 메서드: 웹서버에 값을 보낼 때 '요청 본문(request body)'에 값을 넣어서 보내는 방식.
(Back-end/Spring [Spring] chapter02 기초 지식 배우기)
(2) 예제 애플리케이션의 레이어
https://na1-4an.tistory.com/10?category=1078094
전에 작성한 chapter03 포스팅에서 <3-3-2 레이어 별로 사용할 인스턴스 생성 어노테이션>에서 애플리케이션을 생성할 때 레이어를 분리하는 것을 추천한다고 했다. 이번 프로젝트에서도 레이어를 나누어보도록 하겠다.
포스팅에서 설명한 바와 같이 세 가지 레이어로 나누어보도록 하겠다.
- 애플리케이션 레이어: 클라이언트와의 데이터 입출력 제어
- 도메인 레이어: 애플리케이션의 중심레이어
- 인프라스트럭처 레이어: 데이터 베이스 관련 업무 수행
이처럼 레이어를 나누는 이유❗
MVC 중에서 비지니스 로직 처리를 담장하는 Model의 부분이 많아져서 '모델의 비대화'라는 문제가 발생한다.
모델 안에서 역할 분담을 명확하게 하고 애플리케이션의 레이어 구성을 적용하는 것이 레이어의 목적이다!!
(3) 생성할 컴포넌트 목록
No | 레이어 | 컴포턴트 | 이름 | 비고 |
1 | 애플리케이션 레이어 | View | - | 화면 표시 |
2 | 애플리케이션 레이어 | Controller | Quizcontroller | 제어 역할 담당 |
3 | 애플리케이션 레이어 | Form | QuizForm | 화면의 게임 폼을 표현 |
4 | 도메인 레이어 | Service | QuizService | 인터페이스로 생성 |
5 | 도메인 레이어 | ServiceImpl | QuizServiceImpl | Service를 구현 |
6 | 도메인 레이어 | 도메인 객체 | Quiz | 엔티티 역할 |
7 | 도메인 레이어 | Repository | QuizRepository | 인터페이스로 생성 |
8 | 인프라스트럭처 레이어 | RepositoryImpl | - | O/R Mapper로 자동 생성 |
9 | 인프라스트럭처 레이어 | O/R Mapper | - | 스프링 데이터 JDBC를 사용 |
- View: 화면 표시를 담당.
- Controller: 요청을 처리에 매핑하고, 결과를 뷰에 넘김. 주요처리는 Controller 안에서 실행 않고, Service를 호출.
- Form: 화면의 폼을 표현. 화면에서 입력한 값을 Controller에 넘김.
- Service: 애플리케이션의 서비스 처리를 담당.
- 도메인 객체: 서비스 처리를 실행할 때 필요한 자원(entity 등)
- Repository: 인터페이스로 생성. 데이터베이스의 데이터 조작 내용만 정의. (구현 내용은 작성 안함.)
- RepositoryImpl: 도메인 레이어에서 정의한 Repository의 구현 클래스.
- O/R Mapper: Object와 Relational 간의 데이터를 매핑.
9-2 OX 퀴즈용 데이터베이스 생성
데이터베이스 사용이 익숙치 않다면 아래의 포스팅을 참고하자!
01 데이터베이스 생성
pgAdmin을 열어 아래와 같이 데이터 베이스를 생성한다.
02 테이블 생성
03 프로젝트 생성
'Back-end > Spring' 카테고리의 다른 글
[Spring] chapter11 애플리케이션 만들기(비즈니스 로직 처리) (0) | 2023.08.07 |
---|---|
[Spring] chapter10 애플리케이션 만들기(데이터베이스 조작) (0) | 2023.08.03 |
[Spring] chapter08 유효성 검사 기능 알아보기 (0) | 2023.08.01 |
[Spring] chapter07 요청 파라미터 취득하기 (0) | 2023.07.30 |
[Spring] chapter06 템플릿 엔진 알아보기 (2) | 2023.07.25 |