본문 바로가기
반응형

JAVA/Spring8

[Spring] QueryDSL DB IO 최적화 성능 최적화 이전의 코드와 성능 지표입니다. 우선 Entity에 대한 설명 간략하게 드리겠습니다.public List findSearchResume(SearchType searchType, SearchResumeRequest request, Pageable pageable) { QResume resume = QResume.resume; BooleanBuilder builder = new BooleanBuilder(); if (searchType == SearchType.POSITION){ builder.and(resume.user.position.eq(request.position())); } if(searchType == SearchTyp.. 2024. 4. 24.
[Spring] 검색 요청 JPQL에서 QueryDSL로 변경하기 프로젝트를 진행 중 기존 검색 요청을 JQPL에서 QueryDSL로 변경하기로 하였다. 변경 이유에 대해서 간략하게 설명드리겠습니다. 아래에 변경 전 코드를 추가해 두었지만, JPA(JPQL)에서는 컴파일 시 N.P를 막지 못한다는 단점이 존재합니다. 그래서 필드의 Null처리를 위해서 서비스 코드의 코드 양 자체가 많아 진다는 단점이 존재합니다. 만약에 검색 조건이 2개에서 1개가 추가된다고 가정해 보면 필요한 JPQL의 최대 개수는 7개가 됩니다. 그렇게 되면 필요한 쿼리 메서드만 7개가 되어버리고 서비스 코드에 절대적으로 7줄이 추가될 수밖에 없습니다. QueyrDSL을 사용하게 되면 기존의 SOLID를 위배하지 않는 선에서 서비스 코드의 코드 양 자체를 줄일 수 있게 됩니다. 변경 전 코드 Sea.. 2024. 4. 15.
[Spring] 검색 기능 Parameter에서 Body로 변경하기 프로젝트를 진행 중 기존 검색 요청은 Http의 parameter로 request를 보내는 방식으로 진행하였다. 하지만 프로젝트에서 검색 조건은 다음과 같다. 1. 기술 스택 검색 2. 직군.직무 검색 3. 기술 스택 & 직군.직무 검색 검색 입력값이 최대 2개 이상이 된다는 점에서 기존 parameter로 검색을 진행한다는 점이 프론트 분과의 소통에서 단점으로 다가왔다. 단점은 크게 2가지였다. 참고로 직군.직무의 경우는 String, 기술 스택의 경우에는 List으로 전달이 된다. 배열을 파라미터를 통해 JSON으로 보낼 경우에 프론트에서 파라미터로 변환하는 과정에서 처리해 줘야 하는 작업이 많아진다. URL 자체가 길어진다. 그러한 이유들로 기존 Http의 parameter로 request를 보내.. 2024. 4. 15.
[Spring Boot] Thymeleaf decoupled logic Config 등록 방법 Thymeleaf의 decoupled logic 이란? decoupled logic은 Thymeleaf에서 만든 기술로 태그를 이용하여 기존 html 코드와 Thymeleaf 로직을 분리하는 기술입니다. 여기에서 얻는 장점은 디자이너가 html을 순수한 마크업 형태로 확인할 수 있어 보다 직관적인 확인이 가능합니다. 하지만 아직까지는 스프링에서 yml 파일을 이용한 자동 bean 등록이 되지 않아서 직접 bean 등록을 해주어야 합니다. 참고로 3.X 이상 버전과 2.X 버전에서의 bean 등록 방법이 조금 다릅니다. 그래서 아래 2가지 등록 방법을 모두 작성할 테니 필요한 부분 사용하시면 될 것 같습니다. Spring Boot 3.X에서의 bean 등록 방법 1. 해당 Config 작성 Thymelea.. 2024. 4. 1.
반응형