스파르타 내일배움 캠프/Today I Learned 80

'22.07.12 Today I Learned

- ResponseEntity 사용법 - Spring 3계층 의존관계 방향 설정 - 팀 회의 느낀 점 1. ResponseEntity 사용법 코드의 통일성을 확보하기 위해 Controller의 API 리턴 타입을 ReponseEntity로 일치시키기로 했다. ResponseEntity에 대해서 얼핏 알고만 있었는데 이번 기회에 사용할 수 있어서 좋았다. 일단 현재 내 코드에서 사용한 방법은 다음과 같다. - 컨트롤러의 API의 타입을 ResponseEntity로 해준다. - 리턴을 해줄 때 ResponseEntity를 사용해주고 builder 패턴을 이용해서 작성해준다. - ResponseEntity를 사용하면 header, body 등에 어떤 값을 넣어줄 지 직접 설정을 해줄 수 있다. 2. Sprin..

'22.07.11 Today I Learned

- 중간점검 후 피드백 1. 중간점검 후 피드백 오늘은 중간점검을 하고 피드백을 받는 날이었다. 피드백이 생각보다 쎄게 왔다. 그래서 좋았다. 단순히 그냥 칭찬만 해주시는 것이 아니라 부족한 점을 알려주시고 앞으로 나아갈 방향을 알려주셔서 앞으로 팀 프로젝트를 어떻게 해야할 지 그림을 그릴 수 있었다. 전반적으로 팀 협업이 조금 더 보완됐으면 하는 피드백이 주를 이뤘다. 코드의 통일성이라던지, 다른 사람의 코드에 대한 이해도 등 이제는 팀 차원에서 좀 더 커뮤니케이션을 많이 해보면 좋을 것 같다는 의견이 많았다. 그동안 기능개발을 하느라 커뮤니케이션에 소홀한 부분이 솔직히 조금 있었던 것도 사실이다. 튜터님들 눈에는 그런 것이 바로바로 보이나보다. 오늘 꽤 장시간 팀 미팅을 하면서 앞으로 팀 프로젝트의 ..

'22.07.08 Today I Learned

- Spring Data JPA 활용해서 외래키로 쿼리메소드 작성하기 - 외래키로 엮인 테이블 강제로 drop 하는 법 1. Spring Data JPA 활용해서 외래키로 쿼리메소드 작성하기 프로젝트를 진행하며 좋아요 기능을 구현하는 과정에서 좋아요 엔티티에 댓글 엔티티와 유저 엔티티를 매핑을 했기 때문에 테이블도 자연스럽게 외래키로 매핑이 되었다. 이 과정에서 좋아요 테이블에는 외래키들 밖에 없어서 쿼리메소드를 어떻게 작성해야되나 고민을 했는데 구글링 하니 바로 답이 나왔다. - 일반적인 쿼리메소드 DB에 username이라는 column이 있을 때 ex) void findByUsername - 외래키 활용해서 쿼리메소드 User 엔티티에 PK가 id일 때 ex) void findByUser_Id {엔..

'22.07.07 Today I Learned

- 자바스크립트 모듈의 의미 - 좋아요 기능 구현 HOW? 1. 자바스크립트 모듈의 의미 프로젝트를 진행하면서 ajax call을 하는 함수를 자바스크립트 모듈로 만들어서 써보자는 의견이 있었다. 그래서 ajax call을 하는 함수를 다 한 군데에 모아놨는데 튜터님께서 이건 모듈이 아니라고 말씀하셨다. 모듈은 최소한의 기능단위여야 하고 다른 프로젝트에서 바로 가져다 쓸 수 있어야 하는 것이라고 하셨다. 생각해보니 내가 한 것은 자바스크립트 함수를 그저 모아놓은 것일 뿐 다른 프로젝트에서는 가져다 쓸 수 없는 것이었다. 이렇게 또 하나 모듈의 의미에 대해서 알 수 있었다. 2. 좋아요 기능 구현을 HOW? 오늘 대부분의 시간을 좋아요 기능을 어떻게 구현하면 좋을지에 대해서 고민하면서 보냈다. 구글링을 통..

'22.07.06 Today I Learned

- String 비교할 때는 equals를 사용하자. 1. String 비교할 때는 equals를 사용하자. 댓글을 작성 시간 순으로 정렬하는 기능을 만들고 싶었는데 여기서 배운 점이 있어 기록하고자 한다. 처음에는 findAllByNewsIdOrderByCreatedAtDesc 이런식으로 findAllBy를 해줬었는데 공식문서 및 튜터님의 조언을 참고해서 findBy까지만 하는걸로 수정했다. 튜터님께서도 이렇게 하면 문법적으로 오류가 없는 것 같다고 하셨다. 그런데도 포스트맨으로 확인을 해보니 원하는대로 정렬이 되지 않았다. 무엇이 문제인지 계속 고민을 했는데 정답은 controller쪽에 있었다. 원래는 표시한 부분에 if(direction == "DESC")) 이렇게 조건을 걸어줬었다. 그런데 이것..

'22.07.05 Today I Learned

- content-type CORS 에러 해결 1. content-type CORS 에러 해결 백엔드와 프론트엔드를 분리해서 작업을 하다보니 오늘 UI랑 API 연동하는 것을 테스트하려고 할 때 CORS에러가 발생했다. 응답 헤더의 Access-Control-Allow-Origin을 잘 명시를 해줬음에도 불구하고 에러가 생겨서 처음에 해결하는데 좀 어려웠다. 에러 메시지를 잘 읽어보니 content-type 쪽이 문제인 것 같아서 응답 헤더의 Access-Control-Allow-Headers에 content-type을 추가해주니까 잘 해결이 됐다.

'22.07.04 Today I Learned

- 프론트 쪽 코드 수정 1. 프론트 쪽 코드 수정 오늘은 주로 프론트 쪽에서 ajax 통신을 하는 부분을 많이 만졌다. 이 과정에서 자바스크립트로 HTML element에 클래스를 붙였다 뗐다 하는 방법에 대해서 알게 됐다. document.querySelector('#editor-container').classList.toggle("comment-editarea"); 아이디가 editor-container인 HTML element에 comment-editarea 라는 class를 붙여줬다 떼줬다 하는 코드이다. toggle을 해주면 클래스가 있으면 없애주고 없으면 붙여준다.

'22.07.01 Today I Learned

- ajax로 GET요청하고 응답값 바로 변수에 저장하는 법 - 중간점검 후 팀 피드백 1. ajax로 GET요청하고 응답값 바로 변수에 저장하는 법 ajax로 GET요청을 한 뒤에 API에서 넘겨준 응답 값을 바로 변수에 저장을 할 일이 있었다. 그런데 내가 배워서 지금까지 사용하던 방법으로는 잘 되지 않았다. 방법을 찾아보려고 저어어엉말 고생을 많이 했다. 결국 찾은 방법이 하나 있다. let userKey = $.ajax({ async: false, url: "/api/test", type: "GET", dataType: "JSON" }).responseJSON; @GetMapping("/api/test") public Map test() { Map result = new HashMap(); res..

'22.06.30 Today I Learned

- JPA 연관관계 복습 - Transaction의 의미, @Transactional 1. JPA 연관관계 복습 JPA 연관관계에 대해서 복습했다. 처음 공부했을 때보다 오늘 더 이해가 잘 된 것 같다. 이 부분에서 딱 한 가지 막히는 것이 있었는데, 엔티티의 멤버변수에 값을 넣어줬는데 그것이 어떻게 데이터베이스상에 저장이 되는 것인지에 관한 것이었다. 이 부분을 해결할 수 있는 것은 바로 @Transactional에 있었다. 2. Transaction의 의미, @Transactional Transcation(트랜잭션)이란 데이터베이스에서 실행되는 하나의 논리적 실행단계를 의미한다. 즉 트랜잭션이 시작되고 끝이 나야 데이터베이스에 데이터가 정상적으로 저장이 되는 것이다. 트랜잭션은 저장이 되거나 혹은 아..

'22.06.29 Today I Learned

- JPA: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer 에러 - data truncation: data too long for column 에러 - 자바스크립트로 현재 페이지 URL에서 쿼리 파라미터 가져오기 1. JPA: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer 에러 댓글을 저장하려고 할 때마..