열심히 끝까지
[10분 테코톡] 해리&션의 MVC 패턴 본문
해리&션의 MVC 패턴
https://www.youtube.com/watch?v=uoVNJkyXX0I
1. MVC 패턴?
: 디자인 패턴
>> SW개발방법을 공식화 한 것
>> 결론
: Model & View & Controller
애플리케이션을 3가지 역할로 구분한 개발방법론
- MVC 패턴 이전 "모델 1"
[웹 어플리케이션의 아키텍쳐 : 모델 1]
구성 : JSP + JavaBean(Service)
뷰와 로직이 섞임
장점 : 구조가 단순
단점 : 출력과 로직 코드가 섞여 JSP코드가 복잡.
프런트와 백엔드가 혼재되어 분업에 용이하지 않음.
유지보수가 어려움
- MVC 패턴 이전 "모델 2"
[웹 어플리케이션의 아키텍쳐 : 모델 2] = MVC와 비슷
구성 : JavaBean(Service)(M) + JSP(V) + 서블릿(C)
MVC 구조 (구성 차례로)
장점 : 뷰와 로직의 분리로 모델에 비해 덜 복잡
분업이 용이
유지보수 용이
단점 : 모델1에 비해 습득이 어려움
작업량이 많음
- MVC 흐름
1. 사용자는 원하는 기능을 처리하기 위한 모든 요청을 컨트롤러에 조냄
2. 컨트롤러는 모델을 사용하고 알맞은 비즈니스 로직을 수행
3. 컨트롤러는 사용자에게 보여줄 뷰를 선택
4. 선택된 뷰는 사용자에게 알맞는 결과 화면을 보여줌
이 때, 사용자에게 보여줄 데이터는 컨트롤러를 통해 전달받음
>> 각 역할
- Model : 값과 기능을 가지고 있는 객체
비즈니스 로직 수행
- View : 모델에 포함된 데이터의 시각화
비즈니스 로직 없음
- Controller : 모델 객체로의 데이터 흐름을 제어
뷰와 모델의 역할을 분리
>> why MVC?
: 원래 개인의 컴퓨터에서 작동하는 애플리케이션의 개발을
목적으로 만들어진 패턴
: www(World Wide WEB) 애플리케이션을 사용하기 위한 용도로
폭 넓게 사용
장점 : 각 컴포넌트의 코드 결합도를 낮춤
코드의 재사용성을 높임
구현자들 간의 커뮤니케이션 효율성을 높임
2. Model, View, Controller with Code
- Model에서 View의 접근 또는 역할 수행
>> 예시
"도메인이 아닌 출력에 대한 로직은 별도로 분리해보면 어떨까요?"
-> toString을 model에서 쓰는..
- View에서 일어나는 "과한" 값 검증과 예외처리
>> 검증과 예외처리를 몰빵으로 하기보다는 각각 나누어서 해결
- View에서 일어나는 비즈니스 로직
>> 입출력 채널이 달라지면 벌어지는 로직
- Controller에서 중복 발생!
>> 별도의 객체로 분리
별도의 메서드로 분리
ex ) 쇼핑몰
: 게시판에서 회원 정보를 보여주고
상품 목록 보기에서도 회원정보를 보여주어야 한다면
회원 정보를 읽어오는 코드는 어떻게 해야 하는가?
3. Service
- Service
: 비지니스 로직(Business logic)을 수행하는 메서드를 가지고 있는 객체
: 비지니스 메서드를 별도의 Service 객체에서 구현하도록 하고
컨트롤러는 Service 객체를 사용하도록 함
>> Service는 각각의 Transaction 지님
특징 : ACID
1. 원자성(Atomicity)
: 하나의 원자 트렌젝션은 모두 성공 or 모두 실패
2. 일관성(Consistency)
: 트렌젝션 작업처리 결과가 항상 일관성 있어야 함
3. 독립성(Isolation)
: 어느 하나의 트렌젝션이라도 다른 트렌젝션의 연산에 끼어들 수 없음
4. 지속성(Durability)
: 트렌젝션이 성공적으로 완료되었을 경우, 결과는 영구적으로 반영
4. References
Repository
- DAO, Data Access Object
: 데이터 엑세스 메서드를 별도의 Repository 객체에서 구현
Service는 Repository 객체를 사용
>> Repository와 DAO는 다른 것
'디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(과제)' 카테고리의 다른 글
[10분 테코톡] 두강의 Generics (0) | 2022.07.10 |
---|---|
[10분 테코톡] 라이언의 애자일 (0) | 2022.07.09 |
[10분 테코톡] 제리의 MVC 패턴 (0) | 2022.07.07 |
[10분 테코톡] 루피의 우아한 테크코스 도서관리시스템 (0) | 2022.07.06 |
[코딩 과제] - 7/4 강사님 문제 (0) | 2022.07.04 |