본문 바로가기

회고/데브코스 백엔드 3기

[과제] JPA 게시판 과제 후기

반응형
SMALL

8주차에는 강의로 JPA를 배우기 시작했다. 우선 전체적으로 느낀 점은 익숙하지 않은데 그래서 신기하고 재밌었다. 기존 JDBC에서 직접 쿼리를 작성해야 하고 결과를 받아와야 하던 방식과는 다르게, jpaRepository 구현체를 구현하고 메서드 이름만으로 원하는 데이터를 수정하고 조회해올 수 있었다. 강의에서 들었던 것처럼 예전에 쿼리 설계에 사용하던 시간을 조금이라도 객체적인 방식으로 고안해볼 수 있었던 점이 가장 매력적이었다고 생각했다.

 

제출 Pull Request

 

[3기-C 김소현] JPA 게시판 과제 제출합니다! by thguss · Pull Request #170 · prgrms-be-devcourse/springboot-board-

📌 과제 설명 JPA를 이용하여 User 및 Post 엔티티를 가지는 Post API 를 구현하였습니다. API 구현 후, Controller 테스트 파일에서 Rest-docs를 활용하여 API 명세서를 문서화 했습니다. 👩‍💻 요구 사항

github.com

 

과제 요구사항

SpringDataJPA 를 설정한다.

  • [x] datasource: h2 or mysql

Entity 를 구성한다.

  • [x] 회원 (User)
    • id (PK) (auto increment)
    • name
    • age
    • hobby
    • created_at
    • created_by
  • [x] 게시글 (Post)
    • id (PK) (auto increment)
    • title
    • content
    • created_at
    • created_by
  • [x] 회원과 게시글에 대한 연관관계를 설정한다.
    • 회원과 게시글은 1:N 관계이다.
  • [x] 게시글 Repository 를 구현한다. (PostRepository)

API 를 구현한다.

  • 게시글 조회
    • [x] 페이징 조회 (GET “/posts”)
    • [x] 단건 조회 (GET “/posts/{id}”)
  • [x] 게시글 작성 (POST “/posts”)
  • [x] 게시글 수정 (POST “/posts/{id}”)

REST-DOCS 를 이용해서 문서화 한다.

  • [x] REST-DOCS 문서화

 

느낀점 및 배운점

조금은 시간이 지나서 희미해지려고 하지만 최대한 생각나는 느끼고 배운 것을 기록해보려고 한다. 앞으로 아무리 바빠도 회고는 1순위로 둬야겠다. 기억이 조금이라도 생생할 때 작성하는 회고가 진짜 맛남 :)

 

느낀 점..!! 일단 앞에서도 언급했듯이 JPA를 접하면서 신기하고 재밌었다. 그리고 왜 최근 JPA를 당연시 사용하는 지 알게 되었다. 데브코스에 합격하여 들어온 후로, 초반에 자바와 객체지향적인 것을 먼저 배울 수 있었다. 최근까지 파이썬과 Node.js를 사용했어서 객체 지향과는 거리가 먼 사람이었는데, 자바를 사용하고 강의 및 과제를 수행하면서 객체 지향에 전보다는 조금 익숙해진 것 같다. 그래서 객체 지향이 깔끔하고 가독성 좋은 코드인 것도 알게 되었다. (물론 뭐든지 너무 과하면 안 좋다) 

암튼 그러하여 그런 객체 지향에 쿼리에 큰 고민 없이 집중할 수 있어서 배움에 좀 더 좋았고 코드를 짜는 것도 좋았다. 하지만 신기함과 재미가 젤 컸다. ㅎㅎ 그 과정에서 영속성 컨텍스트도 배웠어서 JPA의 구조와 방식도 잘 이해할 수 있었다.

 

배운 점에 대해 조금 더 끄적여보자면 ?! 앞에서 언급한 영속성 컨텍스트! 덕분에 멋 모르고 JPA를 사용하는 것이 아니라, 데이터가 어떻게 업데이트 되고 조회되는 지 흐름을 이해하고 사용할 수 있었다. JPA를 사용해서 기본적인 CRUD를 작성해볼 수 있었고, Mock를 활용하여 테스트도 작성해볼 수 있었다. 전체적인 과정을 팀 동료와 페어 프로그래밍 하면서 좋은 얘기와 의견 공유도 나누고 좀 더 알차게 과제를 진행한 것 같다. :D

 

개선 및 지향점

- Setter

페어 프로그래밍과 코드 리뷰에서 가장 첫번째로 받았던 지적이다. ㅎㅁㅎ 강의에서 배운 JPA를 사용하는 것에 집중하느라 냅다 Setter를 남발했었는데 조만간 Setter를 지양하고 생성자와 메서드를 적극 사용해보아야겠다.

 

- Test (Mock)

테스트가 익숙하지 않아서 어려웠다. 페어 프로그래밍 하면서 Mock을 써보는데 어떤 방식으로 어떻게 효율적으로 쓸 지 아직 감이 덜 잡힌 것 같다. 습관적으로 assert부터 쓰고 있다. ㅋㅋㅋ큐ㅠㅠㅠ

 

- 깊은 탐구가 필요해요

과제를 정해진 시간 내에 끝내겠다는 목표와 우선적으로 JPA 사용에 익숙해지겠다는 목표에 집중하느라 깊은 탐구는 지나친 것이 많은 것 같다. (예를 들어 setter 지향이라던지) 페어 프로그래밍 때도 사실 멀티가 안돼서 파트너는 깊은 탐구를 하고 싶어했지만 만족할만큼 깊게는 탐구하지 못한 것 같긴 하다. ㅎㅁㅎ (쏘리쏘리) 그래서 과제도 끝난 시점에, 곧 방학도 있겠다 시간적 여유가 생길 때 좀 더 딥하게 탐구해보고 싶다.

 

- JPA 기반 토이 프로젝트

위 사항과 거의 비슷한 점이긴 하지만, JPA가 무엇인지 과제를 통해 알게 되었다면 앞으로 JPA 자체를 더 다뤄보고 싶다. 다른 강의를 듣든 책을 읽든 구글링을 하든 JPA를 더 공부하고 활용해보고자 한다. A to Z 처럼 작은 주제를 잡고 개인 토이 프로젝트를 진행해볼 생각이다. 이 과정에서 깊은 탐구가 이뤄지면 더 좋을 것 같다.

 

- 코드리뷰 반영

과제 PR을 제출했는데 다른 팀원 분과 멘토님께서 좋은 리뷰를 많이 달아주셨다. (감사합니다!) 한 줄 한 줄 꼼꼼히 읽고 찾아본 후 적극 반영하면서 배우도록 해야겠다. + 나도 빨리 달아주어야 한다.

 

- 위 사항 진행상황 공유

말로만 하면 나 허언하는 사람 된다. 최대한 빠른 시일 내에 시간을 내서 틈틈히 위 사항을 지키고 티스토리에 공유하고자 한다. (정말 늦으면 데브코스 수료 후가 될 것 같다. 6개월은 안 넘기는 것이 목표!)

 

과제 수행 Repository

 

GitHub - thguss/springboot-board-jpa: SprintBoot JPA 게시판 구현 미션 Repository 입니다.

SprintBoot JPA 게시판 구현 미션 Repository 입니다. Contribute to thguss/springboot-board-jpa development by creating an account on GitHub.

github.com

 

 

하하하 이제 길을 잘 닦아보자 ^!^

 

 

반응형
LIST