본문 바로가기

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

[프로그래머스 데브코스 백엔드 3기] 8주차 회고

반응형
SMALL

회고가 2주 밀렸다.. ㅠㅠ 정신없이 살다보니 8주차 기억이 안 나서 학습 기록과 할 일 기록 이것저것 뒤져보다 복기해서 기록해본다. 그리고 앞으로 진짜 매주 금요일에 회고 쓰는 날로 못 박아놔야겠다. 사람의 기억력이란 ㅠㅅㅠ

 

8주차는 JPA를 배워보는 한 주였다. DB Connection 연결과 쿼리를 수동으로 짜야하는 JDBC와 다르게 JpaRepository 구현과 메서드 이름만으로 DB에 접근하고 데이터를 보내고 받는 것이 전체적으로 신기했다.

 

JDBC, Mybatis, JPA, JPA 환경 세팅

1일차에서는 커리큘럼 소개와 JDBC와 비교하여 JPA란 무엇인지 배울 수 있었다. 확실히 비교해서 들으니 JPA의 편리성이 좀 더 가깝게 다가왔고, JDBC에 비해 좀 더 객체지향적으로 코드를 작성할 수 있다는 말씀이 공감되었다. 쿼리를 고민하고 작성하는 시간에 (물론 복잡한 쿼리를 직접 짜야 하지만) 코드를 어떻게 더 객체지향적으로 작성할 수 있을 지 고민해볼 수 있고, 쿼리가 안 보여서 가독성이 더 좋아져보였다.

 

영속성 컨텍스트, 단일 엔티티 매핑

2일차에서는 JPA의 구조와 흐름을 파악하기 위해 가장 중요한 요소 중 하나인 영속성 컨텍스트(Persistance Context)를 배웠다. 영속성 컨텍스트에 객체를 올리고 내리고, 또 DB와 연결하여 업데이트 부분에서만 연결하고 한번 연결한 데이터 조회는 Map 형식의 저장소에서 바로 꺼내주는 것이 매우 효율적이게 보였다. 신기해서 학습 정리 후 글로 기록해보았는데, 아래 포스팅과 같다.

또한 단일 엔티티 매핑에서도, 어노테이션을 적용함으로써 객체와 엔티티가 연결되고 생성되는 것이 매우 신기하게 다가왔다.

 

[TIL] 영속성 컨텍스트 (Persistence Context)

오늘 강의에서는 영속성 컨텍스트의 개념과 구조, 기능들을 배울 수 있었다. 구조를 이해한 후, 기능에 대한 설명을 들으니 DB에 어떻게 접근하고 데이터를 어떻게 가져오는지 더 잘 알 수 있어

soso-hyeon.tistory.com

 

연관관계 매핑

3일차에는 매핑을 배웠다. 개인적으로 연관관계부터 조금 어렵게 다가왔다. 일대일, 다대일, 일대다. 개념은 학교 수업에서부터 꽤 많이 들어왔고 그래서 개념도 잘 알고 있다고 생각했지만, 막상 주어진 엔티티들의 관계를 정의해보고자 하면 적용이 어려웠다. 또한 어노테이션으로 객체끼리 연관 관계에 따라 매핑하는 것이 헷갈렸다. (이것은 반복적으로 경험해야 익숙해질 요소인 것 같기는 하다.)

 

스프링데이터 JPA, 주문 API 저장, 주문 API 조회, 주문 API 컨트롤러

4일차에는 앞서 정의하고 매핑한 Entity들을 가지고 API를 만들 수 있었다. 이 부분부터는 JpaRepository 구현을 제외하고는 JDBC와 크게 다를 것은 없었다. thymleaf 보다는 역시 json이 좋다. ㅎㅁㅎ

 

주문 API 문서화

8주차 마지막 날에는 API를 Rest-Docs를 활용해서 문서화 하는 법을 배웠다. 이 때까지 Notion으로 작성해본 경험만 있었는데 Rest-Docs를 이용하니 모든 것을 자동으로 해주는 것은 아니었지만 빠진 데이터가 있는 것은 컴파일을 통해 알 수 있어서 정확도 측면에서는 좋았다. 또한, Swagger라는 도구도 알고 있었는데 이는 개발 코드와 섞이는 것이 있어서 최근 Rest Docs를 많이 사용한다는 점도 알게 되었다. 의존성으로 삽질도 조금 했지만, 앞으로 있을 JPA 프로젝트에서 적극 사용하면서 익숙해져보아야겠다.

 

마무리

자바처럼 JPA 라는 새로운 개념을 배운 한 주라 즐겁게 배웠다. 또 그만큼 모르는 것이 아직 많이 남아있으니 앞으로 있을 프로젝트와 개인적인 공부로 JPA 공부를 좀 더 해보아야겠다고도 생각이 든 한 주였다.

 

 

반응형
LIST