9장 애플리케이션 만들기

Peter·2023년 7월 8일
0
post-thumbnail

9-1-1 기능 목록

No기능설명
1등록 기능퀴즈를 등록합니다.
2갱신 기능등록된 퀴즈를 갱신합니다.
3삭제 기능등록된 퀴즈를 삭제합니다.
4목록 표시 기능등록된 퀴즈의 목록을 표시합니다.
5게임 기능퀴즈 게임을 실시합니다.

표 9.1 작성할 기능 목록

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

표 9.2 URL 목록

9-1-2 예제 애플리케이션의 레이어

'OX 퀴즈' 애플리케이션은 다음 세 개의 레이어로 나뉜다.

  • 애플리케이션 레이어
  • 도메인 레이어
  • 인프라스트럭처 레이어

MVC 모델에서는 업무 기능이나 취급하는 데이터의 처리 요건이 복잡해지면 비즈니스 로직 처리를 담당하는 모델(Model: M) 부분이 많아져서 '모델의 비대화'라는 문제가 발생한다. MVC 모델은 설계 개념상 모델이 담당하는 부분 자체를 줄이는 것은 안 되개 때문에 모델 안에서 역할 분담을 명확하게 하고 애플리케이션의 레이어 구성을 적용하고 비대해지는 모델을 분할하는 것이 레이어를 나누는 목적이다.

  • 애플리케이션 레이어
    클라이언트에서 받은 요청을 제어하고 도메인 레이어를 사용해 애플리케이션을 제어한다.
  • 도메인 레이어
    도메인 객체에 대해 애플리케이션의 서비스 처리를 실행한다.
  • 인프라스트럭처 레이어
    도메인 객체에 대해 CRUD 조작을 해서 데이터의 영속화(데이터를 영구 저장하는)를 담당합니다.

애플리케이션 레이어와 인프라스트럭처 레이어가 도메인 레이어에 의존하지만 도메인 레이어는 다른 레이어에 의존해서는 안 된다는 규칙이 있다. 즉, 도메인 레이어의 변경에 의해 '애플리케이션 레이어'의 변경은 허용하지만 애플리케이션 레이어의 변경으로 도메인 레이어의 변경이 발생해서는 안 된다.

9-1-3 레이어별 컴포넌트 설명

애플리케이션 레이어

  • Controller
    요청을 처리에 매핑하고 결과를 뷰에 넘겨주는 제어를 한다. 주요 처리는 Controller 안에서 실행하지 않고 '도메인 레이어'의 Service를 호출한다.
  • Form
    화면의 폼을 표현한다. 화면에서 입력한 값을 Controller에 넘겨준다. 또한 Controller 안에서 실행하지 않고 '도메인 레이어'의 Service를 호출한다.
  • View
    화면 표시를 담당한다.

도메인 레이어

  • 도메인 객체
    서비스 처리를 실행할 때 필요한 자원이다(Entity 등).
  • Service
    애플리케이션의 서비스 처리를 담당한다.
  • Repository
    Repository는 인터페이스다. 데이터베이스의 데이터 조작 내용만 정의한다(구현 내용은 작성하지 않는다).

인프라스트럭처 레이어

  • RepositoryImpl
    도메인 레이어에서 정의한 Repository의 구현 클래스다. 'O/R Mapper'가 Repository의 구현 클래스를 생성하는 경우도 있다.

  • O/R Mapper
    O(Object; 객체)와 R(Relational; 관계형 데이터베이스)간의 데이터를 매핑한다.

9-1-4 생성할 컴포넌트 목록

No레이어컴포넌트이름비고
1애플리케이션 레이어View-화면 표시
2애플리케이션 레이어ControllerQuizController제어 역할 담당
3애플리케이션 레이어FormQuizForm화면의 게임 폼을 표현
4도메인 레이어 ServiceQuizService인터페이스로 생성
5도메인 레이어ServiceImplQuizServiceImplService를 구현
6도메인 레이어도메인 객체Quiz엔티티 역할
7도메인 레이어RepositoryQuizRepository인터페이스로 생성
8인프라스트럭처 레이어Repository Impl-O/R Mapper로 자동 생성
9인프라스트럭처 레이어O/R Mapper-스프링 데이터 JDBC를 사용

9-2-1 데이터베이스 생성

pgAdmin4를 실행해 PostgreSQL DB 생성. 생략

9-2-2 테이블 생성

No테이블명설명
1quiz퀴즈 정보를 저장한다

표 9.4 테이블 목록

No칼럼타입제약설명
1idserialPK퀴즈 정보 식별 ID
2questiontextNOT NULL퀴즈 내용
3answerbooleanNOT NULL퀴즈 답
4authorcharacter varying(20)NOT NULL작성자

표 9.5 테이블 정의

9-2-2 프로젝트 생성

생략

profile
개발자 지망생. 일단 하고보자

0개의 댓글