들어가기 앞서.. 스터디를 진행하다, N+1 문제를 직면하게 되었다. Pet과 Visit 쪽에서 조회 쿼리를 날릴 시, 레코드 개수만큼 쿼리문이 더 날라가는 것을 확인했다. 앞서 김영한님의 ORM JPA 강의와 다른 코딩 책을 공부하며 접한적이 있지만, 다시 한번 제대로 정리해보는 시간을 가져보려 한다. 공부하기 앞서, 내가 알던 N+1 문제는 쿼리 실행 시, 개발자의 의도와 다르게 쿼리문이 N 개가 더 나가는 것으로 알고있다. 이번기회로 다시 정리해보겠다. N+1 ? 앞서 설명했듯 간단하게 설명하자면, 연관 관계에서 발생하는 문제로, 연관관계가 설정된 엔티티를 조회 시 조회된 데이터의 개수(N) 만큼 연관관계 조회 쿼리가 추가로 발생하는 것이다. 이것을 N+1 문제라고 한다. 이러한 문제를 가볍게 여기..
Study
들어가기 앞서.. 앞서 스터디를 진행하며, @Query를 사용하여 Repository에서 쿼리를 작성해주었다. 하지만, @Query를 사용하게 된다면 SQL을 문자열 형태로 작성해주어야한다. 이렇게 되면 구문 오류를 찾기도 어려울 뿐더러 쿼리를 작성해줄 때 불편함이 존재한다. 또한 오류를 컴파일 시점이 아닌, 어플리케이션 구동시점에 발견할 수 있다. 그렇기에 위의 문제들을 해결해줄 수 있는 QueryDSL을 공부하고 적용하기로 했다. QueryDSL의 큰 장점은 Java 코드로 SQL 문을 작성할 수 있기에 컴파일 시점에 오류를 찾을 수 있다. QueryDSL 이란? 간단하게 설명하자면 다음과 같다. 쿼리를 자바코드로 작성할 수 있게 도와주는 기술이고, Spring Data JPA로 해결하지 못하는 복잡..

[Study-4주차] MapStruct, Exception 적용 + CRUD 수정 + Controller 수정 + ResponseFormat - ② [Study-4주차] MapStruct, Exception 적용 + CRUD 수정 + Controller 수정 + ResponseFormat - ② [Study-4주차] MapStruct, Exception 적용 + CRUD 수정 + Controller 수정 + ResponseFormat - ① [Study-4주차] MapStruct, Exception 적용 + CRUD 수정 - ① [Study-3주차] PetClinicProject CRUD - ② [Study-3주차] PetClinicProject CRUD - ② [St soohykeee.tistory.c..

[Study-4주차] MapStruct, Exception 적용 + CRUD 수정 + Controller 수정 + ResponseFormat - ① [Study-4주차] MapStruct, Exception 적용 + CRUD 수정 - ① [Study-3주차] PetClinicProject CRUD - ② [Study-3주차] PetClinicProject CRUD - ② [Study-3주차] PetClinicProject CRUD - ① [Study-3주차] PetClinicProject CRUD - ① [Study-2주차] PetClinicProject 초기 설정 + 클래스 생성 + 코드 설 soohykeee.tistory.com 이번에는 Exception 적용과 Controller 수정, Contro..
[개념] REST, REST API, RESTful 이란 무엇인가? [개념] REST, REST API, RESTful 이란 무엇인가? REST란 ? REST란 Representational State Tranfer의 약자로, 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고받는 모든 것을 의미한다. 다시말해, 자원(resource)의 표현(representation)에 의한 상태전달 soohykeee.tistory.com ResponseEntity란 무엇인가? Spring Framework에서 제공하는 클래스 중에서 HttpEntity라는 클래스가 존재한다. 해당 클래스는 HTTP 요청(request), 응답(response)에 해당하는 HttpHeader, HttpBody를 포함하는 클래스이다..

[Study-3주차] PetClinicProject CRUD - ② [Study-3주차] PetClinicProject CRUD - ② [Study-3주차] PetClinicProject CRUD - ① [Study-3주차] PetClinicProject CRUD - ① [Study-2주차] PetClinicProject 초기 설정 + 클래스 생성 + 코드 설명 [Study-2주차] PetClinicProject 초기 설정 + 클래스 생성 + 코드 설명 [Stu soohykeee.tistory.com 앞서 간단한 CRUD를 구현하였다. Owner, Pet, Visit은 구현을 완료했지만 Vet의 경우는 제대로 구현하지 못했다. 추가적으로 MapStruct와 Exception을 적용하고, Controlle..