[인프런 워밍업 클럽_0기] 3주차, 세 번째 발자국 #3

[인프런 워밍업 클럽_0기] 3주차, 세 번째 발자국 #3

image

3주차 요약 : 직장인은 집중하기 힘든 코스인 걸 느꼈다..!

강의 요약은 notion에 정리해두었다. https://www.notion.so/d2e9b3e27b3348abbde60994cf627ebd

 

Day 11. 객체지향과 JPA 연관관계

  • 기존 코드를 리팩토링하면서 객체지향적인 개발이 무엇인지 조금이나마 체험할 수 있었다.

  • 객체지향의 사실과 오해에서 나왔던 '객체의 메시지'를 드디어 체험하게 되었다.

  • JPA 연관관계 및 연관관계의 주인이 되는 기준에 대해서 알게되었다.

    • 연관관계에 주인이 아닌 쪽에는 mappedBy 옵션을 줘야한다.

    • 개념은 언뜻 알고있었지만 연관관계의 주인을 정하는 기준을 이렇게 정확하게 알게된 건 처음이다.

    • 연관관계의 주인은 Table을 보았을 때 관계의 주도권을 쥐고있는 쪽이 연관 계의 주인이 된다.

  • 연관관계 주인에 의해서 객체가 연결되는 기준이 된다.

    • 연관관계의 주인 객체에서 연결되는 다른 객체의 setter를 만들어 저장하면 데이터 저장이 정상적으로 잘 된다....!

  • 연관관계를 setter로 연결 후 Transactional이 아직 끝나지 않은 시점에서 그 반대인 객체에서 주인 객체를 getter로 가져오면 null이 반환된다. -> DB 상에서는 아직 저장이 되지 않아 데이터가 없기 때문

    • 해당 문제를 해결하기 위해서는 Setter를 한 번에 둘 다 연결해주면 된다.

  • cascade 옵션과 orphanRemoval 옵션에 대해 알게되었다.

  • 도메인 계층에 비즈니스 로직이 들어가도 된다는 걸 알게되었다. 뭔가 도메인 계층은 깨끗한 상태로 getter와 생성자 외에는 추가적인 메서드가 있으면 안될 것 같았는데 그러지 않아도 되는 것 같다.

  • 리팩토링 후 Service 계층에서 오만가지 도메인을 불러와 직접 처리해주었던걸 리팩토링 하면서 연관 관계를 사용해 최대한 도메인들끼리 직접 협력할 수 있게 코드를 변경한 진귀한 경험을 했다. -> 객체지향의 사실과 오해..! 짱

  • 지연로딩의 개념과 다양한 옵션들에 대해 알게되었다.

  • 연관관계 사용이 100% 정답이 아닌 걸 알게되었다.

    • 비즈니스 요구사항, 기술적인 요구사항, 도메인 아키텍처 등 여러 부분을 고민해서 연관관계 사용을 선택해야 함.

    • 실무에서 경험이 쌓여야 판단이 가능할 것으로 보인다.

 

과제는 따로 못했다..! 야근이 날 괴롭혀서 강의도 겨우 들었기 때문....ㅜ


Day12. 기본적인 배포를 위한 준비

  • 배포의 개념에 대해서 알게되었다.

  • profile 기능을 사용해서 H2와 Mysql 관련 설정을 분리하였다.

  • git과 github의 개념과 차이점을 알게되었다.

  • git의 기초 사용법을 다시 한 번 리마인드하는 시간이 되었다.

    • git은 사용해봐서 기초 사용법을 알고 있는 상태였다.

  • AWS의 EC2를 난생 처음 사용해봤다.

 

과제는 따로 하지 못했다.. 이날도 아마 야근했던 거 같다... 😢


Day13. AWS와 EC2 배포

  • AWS에서 리눅스 명령어를 다뤄봤다.

  • AWS에 콘솔에 접근하는 방법을 알게되었다.

  • 리눅스 명령어 중에 권한 관련 명령어가 좀 어려운 것 같다. 추가적인 공부가 필요한듯.

  • 배포를 위한 프로그램 설치는 Java, mysql, git이었는데 mysql을 설치할때 좀 곤욕이었다. 강의 영상과 현재 ec2 리눅스 버전이 달라서 그런건지 강의에 나오는 명령어를 입력하면 에러가 나서 블로그 이것저것을 검색해봤다.

     

  • 난생 처음 CLI로 빌드를해봤다. 빌드할 때도 영상을 그대로 따라서 하면 에러가 발생했다. 영상에서는 java 11을 설치했는데 내 프로젝트는 java가 17이라 java를 다시 설치해주었더니 정상적으로 빌드가 됐다.

  • foreground와 background의 개념을 알게되었다.

  • 난생 처음 도메인을 구입해봤다.


Day14. Spring Boot 설정, 버전업 이해하기

  • build.gradle에 대해서 알게되었다.

  • dependency configuration에 대해서 알게되었다.

  • Spring과 Spring boot의 역사에 대해 간략하게 알게되었다.

  • YAML 문법에 대해 알게되었다.


Day15. 마무리 및 추가 꿀팁 영상

  • 공부 방향성에 대한 얘기 중 spring의 원리 및 클린 코드를 공부해야겠다고 생각했다.

  • 코틀린에 대한 관심도가 올라갔다. 조만간 코틀린에 대해서도 공부할지도?

  • 스프링 배치가 궁금해서 관련 강의를 사놨었는데 이것도 얼른 수강해야겠다.

  • Spring boot에서 Mybatis를 사용하는 법을 알게되었다. 우리 회사 같은 경우는 옛날 기술들을 많이 쓰고 최신 기술에 대한 거부감이 있는데 이런 걸 보여줌으로써 차근차근 최신 기술로 안내하는 것도 나쁘지 않을 것 같다

  • Client-Side Rendering과 Server-Side Rendering의 개념을 알게되었다.

 


 

완강 후기
image

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]를 완강했다! 🥳🥳🥳🥳

뭔가 강의 제목을 딱 봤을때 진짜 엄청난 기초의 강의겠구나 했는데 강의를 들으면 들을수록 어느정도 깊이가 있어 조금 놀랐다. 오히려 기초가 없는 사람은 약간 따라하기 버거울 수도 있다는 생각이 들었다.

기존 코드를 객체지향적으로 리팩토리하는 부분에서 많은 인사이트를 얻어서 뭔가 최태현님의 다른 강의들까지 들으면 남들과 조금은 다른 개발자가 될 수 있지 않을까란 생각도 들었다. 아무래도 서적에서 공부하는 것과 실무가 약간 버무러진 코드와 깊이 있는 코드를 경험하는 것은 너무 다르니까..! 아무튼 너무 기초적이지 않는 강의에 만족도가 높았다.

직장인이라 잦은 야근과 피로감에 미니 프로젝트의 진도가 더디게 나가서 매우 아쉬웠다. 인프런 워밍업 클럽이 끝나도 미니 프로젝트는 개발을 계속 시도해봐야겠다.

정말 유익하고 열정적인 3주였다. 나 포함 참여한 인프러너와 코치님까지!

모두 3주 동안 너무 고생하셨습니다!

오프라인 수료식에 참여하고 싶었지만 평일인데에다 판교라 참여하지 못하는 것이 너무 아쉽네요.

온라인으로라도 참여하겠습니다

열정적인 개발자분들 앞으로도 화이팅하세요🥳

그리고 하루에 과제가 하나씩 있었을 때는 정말 미리 해놓지 않으면 직장인은 따박따박 당일에 수료하기 어려운 코스인 거 같아 이런 부분만 조금 개선되었으면 좋을 거 같습니다! ex) 과제는 미리 내놓되 완료 체크는 주말에 하기 같은..



참고로 미니 프로젝트는 현재진행중입니다! 평일에는 시간이 없어 주말에 후다닥 개발을 하려고 하는 중입니다.

https://devhan.tistory.com/327

댓글을 작성해보세요.