NHN 베이스캠프 1주차 소감

Updated:

순서

  • 루키새콤TF 최혜연의 1주차 소감을 알아보자!
  • 기술적으로 어떤 것을 알게 되었는지도 들어보자!
  • 앞으로 나아갈 방향도 들어보자!

1주차 소감

NHN 본사에서 진행하는 2달간의 교육 베이스캠프가 시작되었습니다. 무려 판교에서 교육을 받는다는 것!! 인천에 거주 중인 저에겐 너무나도 무서운 소식이지만, 설레는 마음으로 판교에 도착하였습니다!!! (지옥철 싫어요!!)

시설도 너무너무 좋았고, 중식도 제공인 것만으로도 행복한데 무려 중식으로 샤브샤브가..? 오예 열심히 해야겠다는 열정이 매우 매우 생겨납니다!

이번 주 할 일은 “코드로 배우는 스프링 부트 웹 프로젝트” 책 Part 2 - 방명록, Part 4 - 영화/리뷰 실습이 워밍업이었습니다.

책 사진은 다음과 같습니다.

344218815g

Spring boot는 2년 전 실습으로 CRUD만 가볍게 구현했던 경험이 있습니다. 그 당시 이해하는 것이 힘들었었기에, 과제 시작 전 걱정이 많았습니다. 구현을 완료할 자신은 있으나 시험이 매우 두려웠기 때문입니다. 그래서 집에서 공부하려고 무거운 책과 노트북을 챙겨가면 통근이 힘들어서 그런지 바로 잠들어 버렸습니다. (흑흑…..)

책을 보고 코드를 똑같이 따라침에도 불구하고, 많은 오류가 발생했습니다. 오류 원인은 html 파일에서의 오타였습니다. (ㅎㅎ)

오류가 발생하고, 이를 해결하는 과정은 매우 힘이 들었으나, 결과적으로 모든 것을 구현한 지금은 Spring boot에 대해 이해할 수 있는 재미있는 과정이었다고 생각합니다.

하지만 책을 보지 않고 스스로 구현한다고 생각하면, 구현에 있어 정말 큰 어려움을 겪으리라 생각합니다. 부족한 점들을 보완하기 위해 계속 꾸준한 공부가 필요할 것 같은데 진도가 빠른 것 같아서 적응할 수 있을지 ㅠㅠ 흑흑 (파이팅해보자.)

1주 동안 방명록, 영화/리뷰를 MVC 패턴, 즉 controller, dto, repository, service 등으로 패키지를 나눠 구현하면서 전반적인 아키텍처에 대한 이해도를 기를 수 있었습니다. 1주 동안 기술적으로 얻은 점은 밑에서 이야기하겠습니다.


배운 점

Part2 - 방명록

  • Spring Data JPA이용해서 entity 처리
  • Spring MVC 이용해서 DTO 처리

화면 정리

  • 목록 : /guestbook/list - GET

  • 등록 - 입력 화면: /guestbook/register - GET

    등록 - 등록 처리 : /guestbook/register - POST

  • 조회 : /guestbook/read - GET

  • 수정 - 수정/삭제 화면: /guestbook/modify - GET

    수정 - 처리 화면 : /guestbook/modify - POST

  • 삭제 - 삭제 처리 : /guestbook/remove - POST

서비스 계층과 DTO

  • entity 객체는 가능하면 불변을 유지하는 것이지만 DTO는 가변이다.
  • DTO로 처리하면 순수한 데이터를 사용하는 것이 가능하다.

페이지 번호의 계산

  • 현재 페이지를 기준으로 화면에 출력되어야 하는 마지막 페이지 번호를 우선 처리

    tempEnd = (int)(Math.ceil(페이지번호/10.0)) * 10;

  • 시작 페이지 번호는 tempEnd - 9;

  • 마지막 페이지 번호는 만일을 위해 전체 데이터의 개수를 이용해서 다시 계산

    end = totalPage > tempEnd ? tempEnd: totalPage;

  • 이전 페이지 : prev = start > 1;

  • 다음 페이지 : next = totalPage > tempEnd;

Part4 - 영화/리뷰

M:N 관계의 특징

  • 데이터베이스의 논리 설계 상으로 양방향으로 관계를 맺는 구성이다.

  • 실제 구현시에는 중간에 매핑 테이블이 생성되는 구조

  • JPA에서 M:N처리

    • @ManyToMany
      • 자동으로 중간에 매핑 테이블 생성해줌
      • 매핑 중간에 추가적으로 들어가는 데이터를 처리할 수 없다는 점이 단점이다.
    • @ManyToOne
      • 중간에 추가적인 데이터를 처리할 수 있기 때문에 더 많이 사용하는 방식이다.
    • ‘movie’, ‘member’ 사이에 ‘review’ 를 추가하는 경우!

리뷰 등록 - Ajax로 POST방식으로 JSON문자열 전송

리뷰 수정은 PUT방식, 삭제는 DELETE방식


나아갈 방향

  1. 체력 기르기

    2달 동안의 긴 프로젝트가 기다릴 텐데, 집까지 거리가 멀어서 그런지(무려 2시간!!!) 체력적으로 부족함을 많이 느꼈습니다. 슬프다 흑흑 (주말마다 힘들어도 요가하기!!(안할듓;;))

  2. 맥북 IntelliJ 단축키 익히기

    제가 생각보다 더 큰 ‘'맥북 바보'' 라는 것을 느꼈습니다. 예시로 alt키 누르라고 해서 찾았는데 없어서 인터넷에 검색해보니 option키였다…..

    그래서 맥북이랑 친해지는 시간을 주말에 따로 가져보려고 합니다..특히 IntelliJ 너어~~ 단축키 너무 많아..열심히 필요한 것 위주로 정리해보며 맥북 천재가 되겠습니다!

  3. 동기들이랑 친해지기!

    NHN godo SW 직군은 7명이 됩니다!!! 일주일 동안 지하철로 집도 같이 가고, 시험공부도 함께하며 친분을 다질 수 있었습니다. 더 관계가 발전해서 재미있는 교육 기간이 되었으면 좋겠습니다!! 앞으로도 파이팅!

Leave a comment