Spring/SpringMVC

[Spring MVC] 계층의 분리

2022. 7. 30. 16:16
목차
  1. 1. 3계층 
  2. 2.계층의 분리

1. 3계층 

 Spring은 3계층으로 구분 할 수 있다. 사용자 요청을 받아 흐름을 제어하는 Presentation Layer, 비즈니스 로직을 담당하는Business Layer, 데이터 베이스에 접근하여 데이터 베이스를 다루는 Persistence Layer(Data Access Layer)로 계층을 분리 할 수 있다.

 

Business Layer를 분리하기 이전

 

 UserHistoryDao 회원의 이력을 추가, 삭제, 수정 등 비즈니스 로직을 수행하는 역할이 필요하다. Persistence Layer인 UserDao는 단순히 DB테이블의 정보를 CRUD(Creadt, Remove, Update, Delete)하는 기능만 수행하기에 비즈니스 수행할 수 없다. 그래서 Presentation Layer인 RegisterController에게 UserHistoryDao를 주입해서 사용했다. 하지만 Presentation Layer는 흐름을 제어하는 계층이지 비즈니스 로직을 관리하는 계층이 아니다. 그래서 비즈니스 로직을 담당하는 Business Layer를 새로 만들어 관심을 분리시킨다.

 

2.계층의 분리

Business Layer 분리

 

 

 Business Layer를 분리 한 후에는 register, get, add, change하는 비즈니스 로직을 따로 떼어내어 각 계층별로 업무를 분담한다. 서로의 영역을 분담함으로써 느슨한 결합을 한다. 이를 통해 코드의 변경이 유리해진다. 그리고 Business Layer에서는 Tx(트랜잭션)을 수행한다. Presentation Layer부터 Persistence Layer까지 순서대로 @Contoller, @Service, @Repository 어노테이션을 사용한다. 세 어노테이션들은 @Component 어노테이션의 일부이기 때문에 <component-scan>의 대상이 된다.

 


출처:스프링의 정석 : 남궁성과 끝까지 간다(패스트 캠퍼스 강좌)

 

'Spring > SpringMVC' 카테고리의 다른 글

[SpringMVC] @RequestParam과 @ModelAttribute  (0) 2022.02.26
[SpringMVC] rediect와 forward  (0) 2022.02.26
[SpringMVC] 요청과 응답  (0) 2022.02.25
[SpringMVC] 데이터 변환과 검증  (0) 2022.02.24
[Spring MVC] MVC 패턴  (0) 2022.02.23
  1. 1. 3계층 
  2. 2.계층의 분리
'Spring/SpringMVC' 카테고리의 다른 글
  • [SpringMVC] @RequestParam과 @ModelAttribute
  • [SpringMVC] rediect와 forward
  • [SpringMVC] 요청과 응답
  • [SpringMVC] 데이터 변환과 검증
각시탈코더
각시탈코더
각시탈코더
각시탈코더
각시탈코더
전체
오늘
어제
  • 분류 전체보기 (203)
    • java (46)
      • 객체지향 (20)
      • 기본문법 (8)
      • 자바의 정석 연습문제 오답노트 (9)
      • 백준 알고리즘 (9)
    • Spring (17)
      • SpringMVC (8)
      • Spring DI와 AOP (5)
      • REST API와 Ajax (1)
      • Spring 프로젝트 (1)
      • Spring Security (0)
    • DB (47)
      • Oracle (15)
      • SQL오답노트 (25)
      • 튜닝 (0)
      • ERD (1)
      • DB 모델링 (5)
    • Servlet & JSP (3)
    • JDBC (2)
      • 기본 (1)
      • 스프링JDBC (1)
    • MyBatis (2)
    • JavaScript (2)
      • 코딩애플 (0)
      • 문법 (1)
    • React (0)
      • 코딩애플 (0)
    • HTML (0)
      • 모던 웹을 위한 HTML5+CSS3 바이블 (0)
    • CSS (0)
      • 모던 웹을 위한 HTML5+CSS3 바이블 (0)
    • Linux (0)
    • Git & GitHub (2)
      • Git (1)
    • CS (19)
      • 네트워크 (6)
      • HTTP (7)
      • 컴퓨터구조 (0)
      • 자료구조와 알고리즘 (2)
      • 기타 (4)
    • 개발설정 (2)
    • 기술면접 (0)
      • JAVA (0)
      • Spring (0)
      • DB (0)
      • 네트워크 (0)
      • 공통 (0)
    • 프로젝트 (2)
      • 게시판만들기 (2)
    • 기혁씨의 삽질표류기 (28)
    • 참고자료 (2)
      • 국비수업 (0)
      • 당당 프로젝트 (1)
    • 뉴렉처 (17)
      • 자바 (11)
      • 자바스크립트 (3)
      • 키워드 (0)
      • 숙제 (0)
      • CSS (0)
      • DB (3)
      • 서블릿 (0)
      • 스프링 (0)
      • DOM (0)
    • 내가 만든 학습그림 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 웹프로그래밍
  • SQL
  • 코딩
  • 쿼리
  • Java
  • 자바의정석
  • spring
  • 국비수업
  • 백준
  • 서브쿼리
  • 오류
  • It
  • 프로그래머스
  • 공부
  • 알고리즘
  • 배열
  • 자바의정석기초편
  • 에러
  • 모두의네트워크
  • 네트워크
  • db
  • 자바
  • 연습문제
  • 오라클
  • 객체지향
  • 백엔드
  • 개발자
  • Oracle
  • 뉴렉처
  • 스프링

최근 댓글

최근 글

hELLO · Designed By 정상우.
각시탈코더
[Spring MVC] 계층의 분리
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.