✏️ 항해 5주차, Spring & Lv.4 Lv.5 과제
🗓️ 지난 이야기
- [월] : 4번째 시험이 있었다. 스켈레톤 코드에 추가 구현을 진행하는 문제였다. Lv3과제까지 진행하면서, Controller나 Service, Entity, Dto 활용 등에 익숙해진 덕에 쉽게 풀 수 있었다. 시험을 마치고, 새로운 페어 분과 Lv4 과제(강의 서버 만들기)를 시작했다. Pull Request를 통해 서로 한 부분을 confirm한 뒤, merge하는 방식으로 과제를 진행했다. 나는 DB와 관련된 전체 기술 구현을 맡았고, 페어분은 로그인과 인증처리 관련 부분으로 나눠서 진행했다.
- [화] : 요구사항에 맞춰서, 과제 내용을 완성해가면서 막히는 부분이 생겼다. 동적 쿼리를 어떤 식으로 제어할지에 대한 고민이 생겼다. 이 당시에 지급받은 강의를 다 못들었어서, 후반부에 나오는 쿼리 제어 부분을 놓친 채, 기존에 알고 있는 native query로 매개변수를 바인딩하는 방식 밖에 떠오르지 않았다. 구글링을 통해 QueryDsl이란 라이브러리가 있다는 것을 알게 되었고, 인프런에서 김영한님이 해당 강의를 해주신게 있어서 그 강의를 듣기로 했다.
- [수] : QueryDsl 강의를 들으면서 리팩토링을 진행했다. 라이브러리 적용 단계부터 조금 고생했다. SpringBoot 버전이 달라서, 구글링해가면서 내용을 찾아보았다. QueryDsl을 통해 해당 로직을 리팩토링했다. 사용은 편리하지만, 익숙해지려면 시간이 걸릴 것 같았다.
- [목] : 과제 제출일이었기 때문에, 오전 중에 추가 구현사항이었던 대댓글 구현에 도전해보았다. 대댓글 계층형 구조로 DB에 값을 저장하는 것은 어렵지 않았지만, DB의 데이터를 QueryDsl을 활용하여 순서대로 출력하는 부분에서 막혔다. 대댓글 구현은 다음으로 미루고, 일단 못들은 강의를 마저 들었다.
- [금] : Lv5 과제를 시작했다. 이번에는 로그인과 인증 부분을 맡게 되었다. SpringSecurity와 JWT를 통해 로그인 기능을 구현하였고, 전체적으로 Filter를 통해 인증 및 인가 로직이 적용되도록 코드를 작성했다.
- [토] : Security와 JWT를 통해 구현은 했지만, 내부적으로 어떤 방식이 적용되고 있는지 천천히 읽어가며 정리했다.
Security + JWT를 적용한 로그인 기능 구현하기
- [일] : 다음날 보는 시험의 범위가 심화까지여서, 계속 강의를 들었다. 카카오 로그인과 AOP 적용, 단위 테스트, 통합 테스트 등 다양한 내용을 배웠다. 오늘 배포까지 연습해보려 했지만, 강의를 듣고 예제를 따라하는데 시간을 많이 써서, 내일로 미뤄야겠다.
📚 배운점
지난 주에 과제와 강의를 듣는게 너무 빠듯해서, WIL을 작성하지 못했다. 물론 이번 WIL도 월요일에 작성하고 있다. 이번 주는 반드시 일요일에, 그리고 TIL도 매일 작성하면서 한 일과 할 일을 정리해야겠다.
페어 분과 Git을 통해 협업하면서 git 사용에도 조금씩 익숙해지고 있고, 무엇보다 Spring을 많이 공부할 수 있었다. 프로젝트 폴더 구조라던가, HttpStatus 코드처럼 그냥 코딩된 것처럼 사용하던 부분들에 대해서도 고민해볼 수 있었다.
JPA 같은 경우, 아직도 알아야 할 것이 너무나도 많은 것 같다. 간단하게 정리해보자면,
- ORM(Object Relational Mapping) : 객체의 필드와 DB의 데이터를 자동으로 매핑하는 기술
- JPA(Java Persistence API) : 자바에서 ORM 기술을 구현하기 위한 인터페이스의 모음 ex) Hibernate
- Entity : DB 테이블과 매칭되는 객체이며, 연관관계 매핑을 통해 RDBMS를 구현
- 영속성 컨텍스트 : DB의 데이터와 Entity의 데이터를 연결시킴으로써, 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할
🔥 다음 주 계획
- QueryDsl 강의 완주하기!
- Lv4, Lv5 과제 QueryDsl로 리팩토링 해보기
- JPA 방식과 QueryDsl 방식의 차이를 수치화하기 (더미데이터)
- 배포시 application.properties같은 민감한 파일 다루는 방법 알아보기