들어가기 앞서.. 스터디를 진행하며, DB index에 대한 얘기가 나왔다. 해당 내용은 학과수업을 통해 들어본적이 있던 내용이다. DB의 데이터양이 방대해질수록 조회시에 실행 속도가 느려지기에 이를 해결하기 위한 방식으로 알고 있었다. 물론 지금 우리가 진행하고 있는 프로젝트에는 필요한 정도가 아니다. 소규모 프로젝트이고, 데이터 또한 많지않기에 사용해준다고 성능상의 이점은 나오지 않을 것이다. 오히려 인덱스 관리로 인해 성능이 더 떨어질 수도 있다. 하지만 해당 기능을 사용해보고, 안해보고의 차이는 있다고 생각이 들어 공부를 하고 적용을 해보려고 한다. Index? 인덱스란 추가적인 쓰기 작업과, 저장 공간을 활용하여 DB 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 더욱 쉽게 설명한 예제가 ..
들어가기 앞서 .. 여태 스터디 프로젝트에서 진행하며 예외처리는 모두 try-catch를 이용해서 해왔다. 또한 학과 수업으로 배울때도 예외처리는 모두 try-catch를 사용했다. 이번 스터디를 진행하며 처음으로 @RestControllerAdvice를 접하게 되었다. 해당 내용에 대해 공부를 하다보니 다들 공통적으로 하는 말이 있었다. try-catch를 사용해서 코드가 복잡해지고 가독성이 떨어졌다는 것이였다. 한번도 try-catch문의 단점에 대해 생각해본적이 없었다. 실제로 RestControllerAdvice가 더 효율적인지 공부를 해보며 정리해보겠다. @RestControllerAdvice? 스프링에는 예외처리를 해주는 다양한 방식들이 존재한다. 그중에서 오늘은 @RestControllerA..
들어가기 앞서.. [Study] Spring 정리 (IoC, DI, AOP, POJO, MVC) [Study] Spring 정리 (IoC, DI, AOP, POJO, MVC) Spring 이란? 정의 Spring이란 간단히 말하면 Java 기반의 웹 어플리케이션을 개발할 수 있는 오픈소스 프레임워크이다. 더욱 자세하게 용어를 풀어 설명하자면 다음과 같다. 오픈소스 : 용어에서 알 soohykeee.tistory.com 앞서 AOP에 대해 정리한 적이 있지만, 간단하게 정리하였기에 다시한번 정리해주기 위해서 글을 작성한다. 현재 진행하고 있는 Study에서 AOP를 활용하여 logging 정보를 출력하도록 사용해주기로 했다. 해당 AOP를 pet-clinic 프로젝트에 적용하기 전, 우선적으로 공부를 해보..
들어가기 앞서.. QueryDSL을 학습하며, 동적쿼리에 대해 알게되었다. 또한 스터디 5주차때 다른 스터디원의 발표를 보며 동적쿼리 사용법을 보게되었다. 조회에서 findOne, findAll, findList 등등 이러한 조회의 경우를 여러개로 분리하지 않고 하나로 작성해줘서 효율적으로 처리하는 것을 볼 수 있었다. 말로만 들었지만 실제 사용해 보지는 않았어서 이번에 공부를 하며 스터디에 적용해보려한다. 동적쿼리란? 동적 쿼리란 상황에 따라 다른 문법의 SQL을 적용하는 것을 말한다. QueryDSL을 사용하게 된다면 이러한 동적쿼리를 사용하는데 강점이 있다. 예를 들어 상황에 따라 조건문이 생성되어 조회를 한다고 가정해보자. 상황들에 대한 예시는 다음과 같다. name이 넘어오면 where name..
들어가기 앞서.. 스터디를 진행하다, N+1 문제를 직면하게 되었다. Pet과 Visit 쪽에서 조회 쿼리를 날릴 시, 레코드 개수만큼 쿼리문이 더 날라가는 것을 확인했다. 앞서 김영한님의 ORM JPA 강의와 다른 코딩 책을 공부하며 접한적이 있지만, 다시 한번 제대로 정리해보는 시간을 가져보려 한다. 공부하기 앞서, 내가 알던 N+1 문제는 쿼리 실행 시, 개발자의 의도와 다르게 쿼리문이 N 개가 더 나가는 것으로 알고있다. 이번기회로 다시 정리해보겠다. N+1 ? 앞서 설명했듯 간단하게 설명하자면, 연관 관계에서 발생하는 문제로, 연관관계가 설정된 엔티티를 조회 시 조회된 데이터의 개수(N) 만큼 연관관계 조회 쿼리가 추가로 발생하는 것이다. 이것을 N+1 문제라고 한다. 이러한 문제를 가볍게 여기..
들어가기 앞서.. 앞서 스터디를 진행하며, @Query를 사용하여 Repository에서 쿼리를 작성해주었다. 하지만, @Query를 사용하게 된다면 SQL을 문자열 형태로 작성해주어야한다. 이렇게 되면 구문 오류를 찾기도 어려울 뿐더러 쿼리를 작성해줄 때 불편함이 존재한다. 또한 오류를 컴파일 시점이 아닌, 어플리케이션 구동시점에 발견할 수 있다. 그렇기에 위의 문제들을 해결해줄 수 있는 QueryDSL을 공부하고 적용하기로 했다. QueryDSL의 큰 장점은 Java 코드로 SQL 문을 작성할 수 있기에 컴파일 시점에 오류를 찾을 수 있다. QueryDSL 이란? 간단하게 설명하자면 다음과 같다. 쿼리를 자바코드로 작성할 수 있게 도와주는 기술이고, Spring Data JPA로 해결하지 못하는 복잡..