1. Facts(사실, 객관)
* 토이프로젝트
- bookclub 프로젝트 스터디 테스트 개선
- bookclub 계정 테스트 개선
*블로그 작성
- DB where절에서 if문 사용하기 블로그글 작성
*강의
- ToDoList 만들기 fastcampus 강의
- 어드민페이지 만들기 fastcampus 강의
- 디자인 패턴 약 10개 fastcampus 강의
- JPA 기본 인프런 강의
*스터디
- 반려견 중고 사이트 사이트맵, 주요기능 조사하기
*회사
- 로그 찍기 페이지 일반문의,1:1문의, 주문내역 결제에 구현
*독서
- 어떻게 공부할 것인가
2. Feelings(느낌, 주관)
*토이프로젝트
현재 bookclub 프로젝트에서 가장 주안점은 매핑된 엔티티를 어떻게 테스트하고 어떻게 서비스를 구성할지 알아내는 것입니다. 계정 생성시 사진을 업로드하는 것을 구현하기 위해 계정과 파일업로드를 매핑시켰는데 create를 어떻게 처리해야하는지 한계에 부딪혔습니다. 일단 이 과정 이전까지 코드를 점검하면서 테스트를 개선했습니다. 매핑에 대한 해법을 찾기 위해[어드민페이지 만들기 강의], [JPA 기본강의]를 들으면서 공부중입니다.
*블로그 작성
회사에서 where절에 if문처럼 여러 조건을 필요로 하여 조회하는 기능이 필요했습니다. 다양한 테이블을 가지고 여러 복잡한 조건을 걸었어야 해서 고민이 많았고 해결책을 찾아 글을 작성했습니다. 기존에 where에서 조건을 걸던 것을 join을 이용하여 연관시키도록 바꿨는데, where, join을 언제 사용하면 효과적인지 여러 경우를 비교해서 다음글을 작성하고 싶습니다.
*강의
-ToDoList 만들기
정말 단순한 CRUD를 만드는 강의였습니다. 재밌던 것은 코드숨에서 작성하던 방식과 다른 부분들이 비교가 되었습니다. 강의를 들으면서 따로 글로 적어서 차이점을 적었는데, 추후 블로그에 정리하여 인출하도록 할 것입니다. 같은 목표이더라도 다양한 코딩방법을 배우면서 공통점, 차이점을 발견하며 학습하면 큰 도움이 될 것입니다.
- 어드민 페이지 만들기
간단히 쇼핑몰 Spring Boot 프로젝트이며, JPA를 사용하였습니다. 아쉬운 것은 다양한 매핑관계가 있는 상황에서 CRUD강의가 준비되지 않았습니다. 하지만 엔티티 간에 간단한 1:N , N:1, N:M 설정을 배울 수 있어서 좋았습니다. 그래도 사용자 컨트롤러에 사용자의 상품 주문 목록을 조회하는 서비스로직 구현이 있는데 해당 부분을 다시 공부하면 큰 도움이 될 것 같습니다.
- 디자인 패턴 약 10개
대표적인 GoF의 디자인 패턴 약 10개에 대한 간단한 예제를 보았습니다. 물론, 이 간단한 강의로 많은 것을 배울 수 있고 실무를 알 수 있다고 생각하지 않습니다. 하지만 다양한 인터페이스 사용을 확인하면서 조금은 넓은 시야를 가지는 착각?정도를 할 수 있었습니다
- JPA 기본 인프런 강의
N:1 , 1:1 객체 매핑까지 수강 완료하였습니다. 기본적인 매핑관계까지는 수강을 했으며 강의마다 끝나고 문제를 만들었으므로 주기적으로 문제를 다시 풀면서 인출을 할 예정입니다. 또한 지연전략이나 상속매핑에 대해서도 강의를 들어야합니다.
*회사
기존에는 회원 조회에서만 로그를 찍게 했지만, 이제 문의와 결제내역조회에서도 로그를 찍어야 합니다. front는 javascript와 jquery로 조작했기 때문에, 코드를 옮겨서 front를 만들었습니다. form태그를 javascript에서 action으로 넘길 수 있다는 것을 알았습니다. 특히 문제는 DB였는데 where 절에서 if문처럼 다양한 케이스로 테이블들에 대한 조건이 필요했습니다. 따라서, 해당 문제를 해결하기 위해 and와 or를 적절히 섞었습니다.
*스터디
많은 힘을 들이지는 않았지만, 번개장터와 당근마켓을 기반으로 하여 반려견 중고거래 사이트를 위한 사이트맵과 기능목록을 작성했습니다. 피드백을 받아서 더욱 완성시킬 계획입니다.
*독서
해당 책을 읽고, 얼마나 내가 착각 속에서 공부하기 쉬운지 깨달았습니다. 항상 인출해서 공부하는 습관을 가지며 의식적으로 노력하도록 할 것입니다. 따라서 자체적으로 문제를 만들어 풀고 글로 써보고 말로 설명하도록 하겠습니다.
3. Findings (배운 점)
- 다시 한번 테스트주도 개발에 대한 중요성을 상기했습니다. 토이프로젝트를 다듬으면서 테스트코드에 문제가 있는 것을 발견했습니다. 회원가입에서 다양한 예외상황이 있는데 이런 테스트코드의 개선이 없었다면 실제 서비스에서는 문제가 발생했을 것입니다.
- ObjectUtils를 통해 Controller에서 넘어온 값의 유효성을 검사할 수 있습니다. 기존에 저는 @Valid를 사용했습니다.
- Controller 리턴형을 Dto가 아닌 ResponseEntity 사용할 수 있습니다.
- 테스트코드를 작성할 때 @Mock과 @InjectMocks, @MockBean 등을 활용합니다. 저는 클래스 생성에서 mock(controller.class) 형식으로 만들었습니다.
- 로그를 남길 때 System.out.println 대신에 @slfj4를 이용합니다.
- ERD 설계 -> Table 생성 -> Repository 생성 -> Service 생성 -> Controller 생성 형태로 갑니다. 기존에는 테스트코드 작성을 하며 Controller에서 시작했습니다
- Auditing 기능을 사용하여 수정시간과 수정 계정을 자동으로 변경시킬 수 있습니다.
- 테이블 연관관계는 방향이 없지만 객체 연관관계는 단방향을 연결해주어야 합니다.
4. 자기 선언(Affirmation)
- 매주 한주 하나 이상의 문제해결 블로그 글 작성하기
- 강의를 듣고 기존 나의 지식과 공통점 / 차이점 비교하고 정리하기
5. 다음주 계획(Plan)
- JPA 기본 강의 전부 듣기
- 어드민 페이지 강의에서 서비스 로직 확인하기
- ToDoList 강의에서 다른 부분 블로그에 정리하기
- where, join에 따른 조회 블로그 작성하기
- bookclub 토이프로젝트에서 JPA의 객체 연관관계 설정과 코드 서비스 작성하기
배웠던 내용들은 비교하면서 공부하면 더 좋을 것 같아서 글로 정리해서 올리도록 하겠습니다.
'회고' 카테고리의 다른 글
210512_TIL (0) | 2021.05.13 |
---|---|
210511_TIL (0) | 2021.05.12 |
[ 코드숨 ] 12주차 마지막 후기 (0) | 2021.04.27 |
[ 코드숨 ] 11주차 회고록 (0) | 2021.04.16 |
[ 코드숨 ] 10주차 회고록 (0) | 2021.04.06 |