Skip to content
Kimgeunwook edited this page Oct 2, 2021 · 2 revisions

Day 3

모임날짜: 2020-08-23(일)
참여자: 강인한, 김근욱, 최승연
주제: 기본적인 웹 게시물 관리(CRUD 구현) (7장 ~ 11장)

Contents

1. 스프링 MVC 프로젝트 기본 구성

1.1 기본 구성
1.2 명명 규칙

2. 간단한 CRUD 구현

2.1 presentation 계층(화면 처리)
2.2 business 계층
2.3 persistence 계층


1. 스프링 MVC 프로젝트 기본 구성

목표: 스프링 MVC를 이용하는 웹 프로젝트 구조에 대한 전체적인 이해

1.1 기본 구성
(출처: https://m.blog.naver.com/limoremo/220073573980)
    * Presentaion(Client) 계층: 화면에 보여주는 기술을 사용하는 영역
      - Servlet/JSP(root-context.xml, servlet-context.xml) , 스프링 MVC가 담당
      - 사용자에게 인터페이스 제공

    * Business(Application) 계층: 비즈니스 로직(고객의 요구사항)을 담고 있는 영역
      - 고객의 요구사항과 일치하는 것이 중요함
      - 주로 'xxxService'와 같은 명명규칙을 따름
      - Spring Core 영역(흔히 POJO영역)

    * Persistence(Data) 계층: 데이터 보관/사용 방식에 대한 설계가 들어가는 영역
      - 데이터베이스, 네트워크와 관련된 구현
      - MyBatis 이용
1.2 명명 규칙
  1. xxxController: controller 클래스
  2. xxxService, xxxServiceImpl: 비즈니스 영역을 담당하는 인터페이스, 인터페이스를 구현한 클래스
  3. xxxDAO(Data-Access-Object): DB를 사용해 데이터를 조회하거나 조작하는 기능을 담당하는 것으로 Service에 의해 호출되어 사용됨(별도의 DAO를 구성하지 않고 Mapper 인터페이스를 활용하기도 함)
  4. xxxRepository: JPA와 같은 ORM을 사용하게 되면 객체 단위로 테이블을 관리하고 DAO와 유사한 역할
  5. VO, DTO : 데이터를 담고 있는 객체
    • VO(Value Object): read only의 목적이 강함, immutable 한 데이터 ex. BoardVO
    • DTO(Data Transfer Object): 데이터 수집의 목적이 강함

2. CRUD 구현

목표: 등록, 조회, 수정, 삭제가 가능한 간단한 게시판 웹 만들기

url request 시 spring 내부 흐름도

controller -> service -> mapper(db작업) -> (controller : model 반환) -> view

출처 SpringMVC 전체 흐름 알아보기 2페이지


2.1 presentation 계층(화면 처리)


출처: 코드로 배우는 스프링 웹 프로젝트 : 현업 개발을 위한 단계별 실습서[개정판] 267쪽

2.2 business 계층

서비스 로직을 기준으로 처리하는 계층

2.2.1 설정

인터페이스를 이용한 느슨한 결합 방법
즉, xxxService 인터페이스 와 이것을 구현한 xxxServiceImpl로 동작함

  • ServiceImpl 에서는 xxxMapper 를 주입받아, 이용함

2.2.2 [2.3.1 설정] 에 대한 고찰

인터페이스를 만들어두면, 사용하는 db를 바꿀 때 수정이 용이함

보기
  1. 1. https://cheese10yun.github.io/spring-oop-04/
  2. 2. https://elvis-note.tistory.com/entry/9-Spring-MVC-2-Service와-ServiceImpl

2.3 persistence 계층

DB, 네트워크 작업을 처리하는 계층

2.3.1 처리 순서

  1. 테이블의 칼럼 구조를 반영하는 VO 클래스 생성
    • 주로 테이블 설계를 기준으로 함
    • 주로 @Data annotation 이용함(setter/getter/toString 생성에 용이함)

Clone this wiki locally