forked from enan501/springStudy
-
Notifications
You must be signed in to change notification settings - Fork 0
DAY 3
Kimgeunwook edited this page Oct 2, 2021
·
2 revisions
모임날짜: 2020-08-23(일)
참여자:강인한, 김근욱, 최승연
주제: 기본적인 웹 게시물 관리(CRUD 구현) (7장 ~ 11장)
1.1 기본 구성
1.2 명명 규칙
2.1 presentation 계층(화면 처리)
2.2 business 계층
2.3 persistence 계층
목표: 스프링 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 명명 규칙
- xxxController: controller 클래스
- xxxService, xxxServiceImpl: 비즈니스 영역을 담당하는 인터페이스, 인터페이스를 구현한 클래스
- xxxDAO(Data-Access-Object): DB를 사용해 데이터를 조회하거나 조작하는 기능을 담당하는 것으로 Service에 의해 호출되어 사용됨(별도의 DAO를 구성하지 않고 Mapper 인터페이스를 활용하기도 함)
- xxxRepository: JPA와 같은 ORM을 사용하게 되면 객체 단위로 테이블을 관리하고 DAO와 유사한 역할
-
VO, DTO : 데이터를 담고 있는 객체
- VO(Value Object): read only의 목적이 강함, immutable 한 데이터 ex. BoardVO
- DTO(Data Transfer Object): 데이터 수집의 목적이 강함
목표: 등록, 조회, 수정, 삭제가 가능한 간단한 게시판 웹 만들기
controller -> service -> mapper(db작업) -> (controller : model 반환) -> view
출처 SpringMVC 전체 흐름 알아보기 2페이지
출처: 코드로 배우는 스프링 웹 프로젝트 : 현업 개발을 위한 단계별 실습서[개정판] 267쪽
서비스 로직을 기준으로 처리하는 계층
인터페이스를 이용한 느슨한 결합 방법
즉, xxxService 인터페이스 와 이것을 구현한 xxxServiceImpl로 동작함
- ServiceImpl 에서는 xxxMapper 를 주입받아, 이용함
인터페이스를 만들어두면, 사용하는 db를 바꿀 때 수정이 용이함
보기
- 1. https://cheese10yun.github.io/spring-oop-04/
- 2. https://elvis-note.tistory.com/entry/9-Spring-MVC-2-Service와-ServiceImpl
DB, 네트워크 작업을 처리하는 계층
- 테이블의 칼럼 구조를 반영하는 VO 클래스 생성
- 주로 테이블 설계를 기준으로 함
- 주로 @Data annotation 이용함(setter/getter/toString 생성에 용이함)