본문 바로가기

TIL : Today I learned (or Week)54

TIL 230710 : 다중 JSON 다루기 (JSONObject, JSONArray) 예전에 Post 안에 Reply를 그냥 리턴해서 오류가 난 적이 있다. JSON안에 값이 JSON의 배열인 형태였는데, 오늘 강의를 보며 이를 다루는 걸 다시봤다. String타입으로 받아온 JSON데이터. ResponseEntity에서 getBody를 통해 가져왔다. Body의 내용을 보면 키-값으로 이루어진 맵의 형태이지만, "items"키의 값은 배열 안에 또다른 JSON형태의 데이터들이다. 이렇게 값이 배열인 경우, 배열의 하나하나의 값이 JSON인 배열인 경우 JSONArray를 통해 배열형태로 가져올 수 있다. - 키값을 직접 명시해서 해당 키의 값에 해당하는 배열을 가져오는 형태. 그런 뒤 items라는 배열을 반복하며 Object인 item을 JSONObject로 형변환해서 ItemDto로.. 2023. 7. 10.
WIL 230709 : 스프링를 훑어 보며 FACTS 이번 일주일 동안 있었던 일, 내가 한 일 : JPA를 활용, 다양한 Entity간의 관계를 익히며 각각의 특성을 공부했다. 팀과제에 있어서는 1:N인 글과 댓글, N:M인 글과 태그이 연관관계를 맵핑하는 연습을 했다. FEELINGS 나의 감정적인 반응, 느낌 : 직접 코딩을 구현해보며 항상 느끼는 것은, 설명으로만 보는 건 쉬운데 직접 해보면 다양한 변수를 맞이한다. 동시에, 처음 접하는 다양한 개념들을 표면적으로 다양하게 배우다보니 어떤 개념이 낯선지 헷갈린다. 다행히 리뷰를 해보며 어떤 것들을 좀 더 복습하고 심화된 개념들을 더 파고들지 정리가 되어서 잘 됐다. FINDINGS 그 상황으로부터 내가 배운 것, 얻은 것 : N:M인 글과 태그를 설정하며 최초로 글을 작성할 때의 코딩을 하.. 2023. 7. 9.
TIL 230707 : 다른 팀의 발표를 보고 오늘 뉴스피드 팀과제 발표가 있었다. 다양한 기능을 구현한 팀부터 이러저러한 사정으로 팀원의 부재로 백엔드에 집중한 팀 등 다양했다. 모든 팀으로부터 배울점들이 있었다. 간략히 아래에 정리해본다. 폴더를 도메인별로 나눴다 강의를 듣고서 작업을 하다보면 보통 왼쪽처럼 폴더를 나누게 되는데, 이제 도메인이 다양해지면 저 폴더를 각 도메인에 (Reply, Post, User, Info 등) 나누어서 해당 패키지 내에서 독립적으로 의존하게 작업하기도 했다. 이를 튜터님도 칭찬해주셨고, 나도 시도해봐야겠다라고 생각했다. github의 issue, pull request 활용 매번 느끼지만 결국 협업이다. 내가 빠르게 10중에 10을 내 작업에 투자해서 진행하고 싶지만, 나의 시간 2를 투자해 팀에 10의 이득을 .. 2023. 7. 7.
TIL 230706 : 해시태그 조회 구현하기 (map활용 카운트하는 방식) 여러 태그를 모두 가지고 있는 게시물들을 반환하려고 한다. 문제 내가 찾고자 하는 태그를 모두 갖고 있는 Post들을 전부 가져오고 싶었다. List를 넣어줘서 쿼리메소드에 In을 붙이면 tag들이 있는 Post를 가져올거라 생각했다. 하지만, 원치않은 결과들도 호출됏다. 예를들어, tagA, tagB 둘 다 가지고 있는 Post를 가져오고 싶어서 List tagList = {tagA, tagB}; 를 해서 위 메소드에 입력하게 되면 tagA만 가지고 있는 Post도 가져오게 된다. 내가 원하는 건 모든 tag를 다 갖고 있는 Post들이다. 시도 1. Specification tag를 모두 갖고 있는 쿼리를 동적으로 만들어주는 specification을 활용해보고자 했다. 사실 내가 쓰면서도 잘 모르겠.. 2023. 7. 7.
TIL 230705 : PK FK N:M 중간테이블 매핑하며 (해시태그 게시글 작성) 작업내용 오른쪽과 같이 Tag(HashTag에서 변경 : Post가 N:M 관계여서 중간에 받아주는 TagPostTable 중간테이블을 만들었다. 정리하자면 Post랑 Tag의 외래키를 갖는 TagPostTable Entity를 하나 더 만들고 맵핑하였다. 그러고 어김 없이 오류가 났는데 그로인해 배운 원칙을 정리하자면 아래와 같다. 배운점 1. FK를 가지고 있는 객체를 Repository에 저장할 때는 FK로 매핑된 객체들이 PK를 가지고 있어야 한다. 쉽게 말해, Tag와 Post객체의 각 PK를 FK로 가지는 TagPostTable 객체를 만들고 DB에 save할때 각 객체들이 PK값을 가지고 있어야 한다. tagPostTable 객체를 DB에 저장하기 전이다. 아직 id(PK)값은 null이고,.. 2023. 7. 6.
TIL 230704 : @Getter의 중요성 (허무한 단순 오류 해결) 문제발생 Reply 엔티티 작업하다 또 다시 이전처럼 Reponse가 오질 않았습니다. 디버깅을 돌려봅니다. 우선 claims까지는 잘가져옵니다. 갑자기 hibernate_interceptor가 나오고 원래의 멤버들은 null로 나옵니다. User객체를 다르게 받아오고 있다. 시도 1. UserRepository를 제대로 주입 못 받고 있다? 여기에는 Bean이 주입이 안되어서 그런건가 Repository를 잘 못 가져오는 건지 생각했습니다. 다른 곳은 이렇게 옆에 Bean 주입받는게 보이는데 말이죠. 근데 이는 @RequiredArgsConstructor 어노테이션의 영향이고 크게 중요한건 아니었습니다. 시도 1-2. 다른 객체가 생성되서 그런가 그래서 저 뒤에 참조값이 다른 것은 아닌가 추측해봤습니다.. 2023. 7. 4.