4월 17일 (월)
오늘 한 일
- Spring_Assignment
- 미들웨어 ORM, JPA ↔ 프레임워크 Sring Data JPA 차이
- RDBMS ↔ 인 메모리 RDBMS 종류 및 차이
- API의 Request 방식 중 parameter, query, body의 차이
- CRUD에서 어떤 상황에 어떤 방식의 request를 써야할까
- Restful한 API가 뭔지 그렇지 못한 건 뭔지
- 20:00~22:00 기술매니저님 면담
- static으로 만들면 . 쓰고 사용할 수 있다. new 안쓰고 해당 인스턴스를 바로 사용할 수 있다. 생성자같은 경우 정해져 있다 보니 정적으로 사용
- 전역 예외처리 공부하기
- stream을 돌리면 for each 한다고 생각하면되는데 list map 등 단일객체가 아닌것만가능
- filter
- sorted
- map
- collect
- new Post() + opt + cmd + v ⇒ 반환타입 작성 → Post post = new Post()
- dto는 많을수록 좋은 것 같다. 상황에 따라서 변경에 용이, 하나의 객체가 하나의 기능을 담당하게
- 20:40~21:05 코치님 그룹면담
- Lv1 과제 질문 Issue에 남기기
- 정보처리기사 필기 접수
내일 할 일
- Spring 2주차 학습
- Java 예외처리 학습
4월 18일 (화)
오늘 한 일
- Spring 숙련주차 강의듣기
- 회원 가입 API 구현
내일 할 일
- 요즘 개발 트렌드에서는 ModelAndView를 잘 사용하지는 않는 것 같아요. 최근에는 파라미터로 모델을, 반환으로는 뷰의 경로, 이름을 사용하여 Controller코드를 사용합니다 ← 의미알기
- 로그인 API 만들기
4월 19일 (수)
오늘 한 일
- 2주차 과제 마무리 (회원가입 로그인 API, 변경사항 수정)
- 애너테이션 특강
- JWT 공부
내일 할 일
4월 20일 (목)
오늘 한 일
- Spring Security, JWT 공부
- 기술매니저님 질문 → 예외처리와 statecode, 제너릭에 대해 공부해오자
- Valid와 Validated 공부 https://mangkyu.tistory.com/174
- 상태코드 때문에 머리가 터질 것 같다. 이 숫자는 어디서 만들어졌으며 어떻게 돌아가는지 모르겠다. 분명 서버에서 클라이언트 쪽으로 보내면서 나타나는 상태인데 이걸 변수로 잡아서 body에 넣어 보내지 못한다는게 이해가 안된다. 임의로 모든 상태에 대해서 설정을 해줘야되는건지…
- 2주차 수정, API 명세서 작성하기
내일 할 일
- 과제 마무리
- 스터디 JWT나 generic option 혹은 상태코드에 대해서 발표하기
4월 21일 (금)
오늘 한 일
- login, 회원가입을 같이 페어 프로그래밍을 하다가 코드리뷰하며 구조를 좀더 알아갔다.
- entity를 dto에 안담아서 반환했던 이전 코드들을 발견해서 새로 작성했다.
- @Valid를 활용해서 회원가입 api를 간결하게 작성했다.
- 스터디
- 클래스, 객체, 인스턴스에 대해 정확한 개념에 이야기를 나눴다. 누가 물어보면 제대로 답변하지 못했을 내용이었다. 챗gpt에게 api를 던져서 클래스 객체 인스턴스를 각각 말해달라고 하던가 정확한 개념에 대해 물어봤고 답변도 훌륭했지만 한글이 이해가 어렵다. 개념을 자주 보며 좀더 친숙해져봐야겠다.
- Spring Security JWT 에 대해 발표했다. 하지만 자세한 개념에 대해 파고들진 못했다. 좀더 투자해봐야겠다.
- 오버라이드와 동시에 받을경우 생기는 오점에 대해 얘기했다. 메서드의 명과 super을 붙여서 해결하는 법을 알았다. interface에서 ←
- 스프링에서 잘 쓰이는 어노테이션에 대해 배웠다. 왜 쓰는지를 알았으니 잘 써먹어 보고 싶다.
- Rest API 그러면 rest 하지 않은 api는 에 대해 얘기했다. rest api 333 법칙? 도 읽어봤다.
- JPA, Transactional, 영속성, persistence context 특강
- 특강에서 Transactional을 Java 로 구현하는 걸 들었다. 그 때 발생하는 영속성에 대해 알아보았는데 내가 이해한 Transactional은 같은 메서드안에 있는 여러 연산들 중 하나라도 에러가나면 전체 동작을 rollback 하는 개념이었는데 내부 sql 문은 작동하는 것을 보고 의아했다. 음 DB 변화에 영향을 주지 않는 행동들은 상관없이 작동하는건지 내일 기술매니저님께 질문해야겠다.
내일 할 일
- JWT 페어프로그래밍
- WIL 작성
- 과제 Why 작성하고 최종 커밋하고 API 명세서 Readme 수정
4월 22일 (토)
오늘 한 일
- Spring 2과제 최종본 페어프로그래밍 후 커밋 제출물 수정
- ERD, API 명세서, Why질문 제출
내일 할 일
4월 23일 (일)
오늘 한 일
- DI, IoC, Bean
- 의존성 주입(DI)은 객체가 내부적으로 생성하거나 관리하는 대신에 의존하는 객체를 주입받는 디자인 패턴이다. 이를 통해 객체 간의 느슨한 결합(loose coupling)을 실현하여 코드를 모듈화하고 유지보수성을 향상시킨다.
- 제어의 역전(IoC)은 DI를 포함하는 더 넓은 개념으로, 객체의 생성 및 관리의 제어가 객체 자체가 아닌 프레임워크 또는 컨테이너에게 위임되는 개념을 의미한다.
- "빈(Beab)"은 스프링 프레임워크에서 관리되는 객체를 가리키는 용어이다. 빈은 스프링 컨테이너에 의해 생성, 구성 및 관리되며, DI 및 IoC 원칙을 사용하여 쉽게 연결할 수 있다.
일주일 회고
- 스프링과 자바 개념 학습: 일주일 동안 스프링과 자바의 다양한 개념을 학습했다. 미들웨어 ORM, JPA와 스프링 데이터 JPA의 차이, RDBMS와 인메모리 RDBMS의 차이, API 요청 메소드들의 파라미터, 쿼리, 바디의 차이 등을 공부했다. 또한, 전역 예외 처리, JWT, 애노테이션, 트랜잭션과 같은 개념들을 학습했다.
- 페어 프로그래밍: 페어 프로그래밍을 통해 로그인과 회원가입 API를 구현하면서 코드 리뷰를 통해 더 깊은 이해를 할 수 있었다. 이전에 엔티티를 DTO에 담지 않고 반환하는 코드를 발견하고 수정하였고, @Valid를 사용하여 간결하게 회원가입 API를 작성했다.
- HTTP 상태 코드와 API 명세 작성: HTTP 상태 코드에 대한 이해가 부족하다는 것을 느꼈었다. 서버에서 클라이언트로 전송되는 상태를 임의로 설정해야 하는데, 왜 이러한 숫자들이 나왔고 어떻게 동작하는지 이해하기 어려웠다. 또한, REST API와 비-REST API에 대한 개념을 다시 한번 되새겨보았고, API 명세 작성에 대한 중요성을 깨달았다.
- 개념에 대한 더 깊은 이해 필요: 클래스, 객체, 인스턴스에 대한 개념에 대한 정확한 이해가 필요하다는 것을 느꼈다. ChatGPT에게 질문을 통해 눈으로는 이해할 수는 있었지만, 말로 정확하게 설명하기 어려웠다. 개념에 대해 더 자주 보고 익숙해지는 것이 필요하다고 생각했다.
- 학습 계획의 중요성: 일주일 동안 학습을 진행하면서 학습 계획의 중요성을 깨달았다. 미리 학습할 주제와 내용을 계획하고 목표를 설정하는 것이 학습의 효율성을 높이는데 도움이 되었다고 생각한다.