![[인프런 워밍업 클럽 백엔드 프로젝트 스터디 3기] 1주차 발자국](https://cdn.inflearn.com/public/files/blogs/3f52234d-fc1b-4b5a-aab0-68ce468c14cc/워밍업클럽_3기.png)
[인프런 워밍업 클럽 백엔드 프로젝트 스터디 3기] 1주차 발자국
학습 내용
스프링, jpa, 코틀린을 통해 나만의 포토폴리오 등록 사이트를 개발해보는 첫 발자국입니다.
실습 전 이론 학습
이 강의의 가장 좋은 점이다. 기초적인 지식을 먼저 학습한 다음 실습을 접할 수 있어 지식의 공백이 생기지 않는다.
물론 이미 아는 부분이 많아 가볍게 들었지만 잘하는 개발자 분들을 보면 같은 지식을 본인만의 쉬운 언어로 정리하여 체계적으로 잘 알려주시는 경향이 있다. 이번에도 그러한 점을 느꼈다. 가장 흥미로웠던 부분은 프로젝트 패키지를 나눌 때 였다. 개인적으로 DDD를 학습 한 후로 이상하게 프로젝트 패키지를 나누는 행위가 이전보다 더 부담스럽고 생각이 많아지곤 했다. 하지만 강사님이 프로젝트 패키지를 나누면서 어떤 생각을 하셨고 어떠한 근거로 이렇게 나눴다 라는 말씀을 듣고 DDD원칙에 완전히 준수한 패키지 구성은 아니였지만 꼭 DDD에 걸맞게 패키지를 구성하는게 옳은 것은 아니구나, 역시 은탄환은 없구나 라는 것을 한번 더 느끼며 흥미롭게 시작했다.
테이블 설계
역시 프로젝트의 시작은 테이블 설계이다. N:M 관계를 어떻게 풀어나가는지 학습해보자.
대표적으로 프로젝트 테이블을 봐보자.
(1) project
<-> project_skill
<-> skill
관계 분석
현재 project_skill
테이블에는 다음 컬럼이 있다.
project_id
(FK) ->project
의project_id
를 참조skill_id
(FK) ->skill
이 테이블은 다대다(N:M) 관계를 풀기 위한 "연결 테이블" 역할을 수행한다. 즉, 한 프로젝트가 여러 개의 기술(skill)을 가질 수 있고, 한 기술(skill)이 여러 개의 프로젝트에 속할 수 있는 관계이다.
project_skill
테이블이 N:M 관계를 풀어주는 역할을 한다! 이런 식으로 N:M관계를 서로 1:N , M:1로 만들어주기 위해서는 양쪽의 PK값을 PK로 복합키로 가지고 있는 매핑 테이블이 필요하다.
(2) project
<-> project_detail
관계 분석
project_detail
테이블에는project_id
가 FK로 존재.1:다(1:N) 관계이더. 즉, 하나의 프로젝트가 여러 개의 상세 정보를 가질 수 있음.
이런 식으로 RDBMS에 대하여 어떻게 관계를 형성할 것인지 사전에 정확하게 설계하는 습관이 중요하다. 테이블은 운영 상에 정보를 바꾸는 것이 제약이 크기 때문에 신중하자.
깃과 친해지기
깃 명령어는 빠르고 간결하게 내가 원하는 실행을 할 수 있게 도와준다. 이에 앞서 IDE에서 제공해주는 기본 GUI기능을 알아봤다.
현재 깃 브랜치 정보 보는법
View > Tool Windows > Git
브랜치 이름 rename하는 법
깃허브에 내 프로젝트를 올려두는 법
Git > Manage Remote > 팝업창에 git url 입력 후 ok
commit 친 것을 push 하는 법
아까 View > Tool Windows > Git를 통해 인텔리 제이 하단에 뜬 브랜치 정보 우클릭 하고 push
최종!!
깃허브 화면 리프래쉬 해보면 프로젝트 올라감을 확인 가능
엔티티 추출하기
데이터베이스 설계한 내용을 토대로 jpa 엔티티 규격에 맞게 엔티티를 설계 했다.
이 내용은 기본적인 jpa지식이 탑재된 내용이라 이론 정리는 생략하였다.
미션
깃 프로젝트 생성하기
앞선 과정을 통해 깃레포트지로리를 작성했습니다.
테이블 설계하기
1:N 관계의 erp 시스템에 대한 편성된 예산에 대하여 지출하는 프로세스를 설계했습니다.
1주차 회고
Keep (만족했고, 앞으로도 지속하고 싶은 부분)
기초베이스가 역시 중요하다는 생각이 들었다. 개발을 하다보면 누군가는 되게 짧은 시간에 배우고 잘 하는 사람을 볼 수 있다. 그럴 떄 조급함을 느끼곤 했는데 그 사람의 과거 인생을 봐볼 필요가 있다. 짧은 시간이 단 3개월이라고 치면 그 사람은 짧은 시간 만에 배운게 아닌 지난 몇 년의 경험에 3개월의 지식을 얹었을 거라는 것이다. 개발은 3개월 배웠겠지만 개발자적인 사고방식을 10년했을 수도 있다는 것. 결국 이러한 기초지식이 모여서 나의 체급을 올려야 하는 점을 배운 부분에 만족한다. 전체적인 설계 및 개발 지식을 더 단단하게 배운 거 같아 벌써 앞으로의 여정이 기대됩니다.Problem (아쉬웠던 점)
코틀린이라는 언어가 처음이라 다소 익숙하지 않은 문법들이 있다. 결국 자바와 하고 싶은 게 똑같다 보니 이해하는데 어려움이 있지는 않지만 코틀린 특유의 문법을 좀 더 깊게 이해하고 싶다는 생각이 들었다.Try (다음에 시도해볼 점)
테이블 구조를 보고 올바른 테이블 설계인지 아닌지를 고민해보는 시간을 가지려고 한다. 결국 테이블 설계는 엔티티 설계에 영향을 주게 되고 프로젝트 전체의 흐름에 영향을 주다보니 중요한 요소인 거 같다.
댓글을 작성해보세요.