각 클래스 별 역할
- 컨트롤러 : 요구사항에 대해 적절하게 서비스로 토스할 수 있어야 한다. => 기본적인 요구사항에 대한 확인, 입출력을 담당한다.(사용자와의 상호작용)
- 서비스 : 프로그램의 핵심적인 기능(비즈니스 로직)을 모두 담고 있어야(관리해야) 한다.(사용자와 직접적으로 소통하지 않는다. 오직 컨트롤러의 요청에 의한 작동)
- App : 라우팅. 적절한 컨트롤러로 연결해 준다.
- Repository : 데이터의 저장/조회를 담당한다.(오직 서비스의 요청에 의한 작동)
- DB : 데이터의 영속 저장/조회를 담당한다.(오직 리포지터리의 요청에 의한 작동)
< 컨트롤러 ⇒ 서비스 ⇒ 리포지터리 ⇒ DB >
위와 같이 계층적으로 나뉘며, 화살표 방향으로 1단계씩 요청이 진행됨. 반대 방향은 안 된다!
- 응집도 : 높을 수록(각 모듈 안에는 해당 모듈과 관련된 내용만 들어가 있을 수록) 좋다
- 결합도 : 낮을 수록(모듈 간의 통신이 단순할 수록) 좋다
Git rebase
- merge와의 차이?
- merge가 흡입이라면 rebase는 이사가는 것
- rebase 후에 남아있는 브랜치를 삭제할 수 있고, 히스토리 파악이 쉽다.
git checkout -b bugFix
git commit
git checkout main
git commit
git rebase main bugFix // 맨 아래 두줄과 같은 역할
---------
git checkout -b bugFix
git commit
git checkout main
git commit
git checkout bugFix;
git rebase main;
Git Flow
- 브랜치를 다루는 수많은 방법 중 하나
- hot fixes, release, develop, feature 등 많은 브랜치를 이용한다.
ex) 기능 별로 세분화한 브랜치(feature)를 두고, 작업이 완료되면 develop 브랜치에 반영
Github Flow
- Git Flow의 간단한 축소 버전
- main(master) 브랜치와 feature 브랜치로 이루어져 있다.
- Git Flow보다 더 빠른 배포가 가능하다.
'프로젝트 & TIL > 일별 공부 기록 (백엔드 스쿨)' 카테고리의 다른 글
11일차 - 토스트 UI 에디터(폰트, 플러그인)와 깃허브 블로그, DB (0) | 2023.03.07 |
---|---|
10일차 - 깃 협업과 토스트 UI 에디터 (0) | 2023.03.06 |
8일차 - json 파일 생성과 읽기 & 자바 기초 (0) | 2023.03.02 |
7일차 - 깃 병합과 자바(컬렉션 프레임워크(리스트, 맵)) (0) | 2023.02.28 |
6일차 - 깃 브랜치와 자바(String, 객체 메서드, static, 제네릭, 키보드 입력받기) (0) | 2023.02.27 |