본문 바로가기

전체 글196

Pull Request 018. 자유 게시글 검색 기능 구현 - Querydsl 사용해보기 부트캠프에서 프로젝트를 진행할 당시, 검색 기능을 구현하는데 코드가 상당히 더러웠던 경험이 있다. public MultiResponseDto readFilteredCocktails(String email, String category, String tag, String sortValue) { Sort sort = setSort(sortValue); if (isNotSelectCategoryAndTag(category, tag)) { List cocktails = cocktailQueryService.readAllCocktails(sort); log.info("# CocktailService#readFilterdCocktails 성공"); return createCocktailsSimpleMultiResp.. 2023. 11. 30.
Querydsl 사용해보기 - 검색 기능 만들기 이번에 TDD 프로젝트의 검색 기능을 구현하면서 Querydsl을 처음으로 사용해보았다. 동적 쿼리 사용에 도움이 많이 된다는 말을 얼핏 들었고, 검색 기능을 구현함에 있어 동적 쿼리를 사용하는 것은 반드시 필요했기 때문이다. 직접 사용해 본 후기로, Querydsl의 가장 큰 장점은 일단 상당히 가독성이 좋다는 것이다. JPQL로 일일이 SELECT, WHERE 절을 작성하는 것보다 함수 형태로 표현되기 때문에 훨씬 보기 좋았다. 또한, 다양한 기능을 어려움 없이 사용할 수 있다는 점도 좋았다. Specification을 사용한 검색 조건 지정 등은 SQL문법에 맞춰 LIKE 에 들어갈 조건을 작성하는 등 귀찮은 과정이 있었다. 그러나 Querydsl은 그런 과정이 없어 편리했다. 각설하고, 이번에 Q.. 2023. 11. 30.
6장. 객체와 자료 구조 자료 추상화 아래 두 클래스를 살펴보자. public class Rectangle { public double width; public double height; } ///////////////////////// public interface Rectangle { double getWidth(); double getHeight(); void setRectangle(double width, double height); double getLength(); void setSquare(double length); } 위 클래스는 가로, 세로 값을 별개로 설정해야하고 별개로 읽어야한다. 아래 클래스는 가로, 세로 값을 동시에 설정해야하고, 별개로 읽어야한다. 구체 클래스인 Rectangle은 내부를 완전히 노출하.. 2023. 11. 30.
Pull Request 000 - 시작하기에 앞서 프로젝트를 진행하면서 프론트엔드 팀원들과 소통할 때마다 '내가 저 코드를 좀 알아볼 수 있었으면 더 좋았겠다'싶은 생각이 종종 들었다. 그래서 언젠가는 간단하게나마 풀스택으로 프로젝트를 하나 진행해봐야겠다고 막연한 생각만 하고 있었다. 그런데 막상 자바스크립트를 공부하자니 너무 재미없어보였다. 처음 자바를 공부할 때 어땠는가, 진짜 너무 재미없었다. '그럼 나는 왜 지금 개발이 재밌다고 느끼지?' 생각하니 우아한테크코스에 지원하고 프리코스 미션들을 직접 구현하는 과정에서 개발에 재미를 붙였던 것이 생각났다. 이렇게 생각하니, 자바스크립트 문법 내용을 하나하나 보고 있는게 무슨 의미가 있나 싶었다. 자바도 완전 기초도 모르는 단계에서 직접 구현하며 배웠더니 훨씬 빨리 늘었다. 주변 친구들에게 프로그래밍으로.. 2023. 11. 29.
Pull Request 017. 자유 게시글 여러 개 조회 기능 TDD로 구현하기 자유 게시글과 관련해서 남은 기능은 크게 2개다. 하나는 페이지 전체 조회 기능이고, 하나는 검색 기능이 되시겠다. 우선은 페이지 조회 기능을 구현해보고자 한다. 페이지 조회 기능의 로직은 다음과 같다. 게시글 페이지 조회 urn은 /free-board?page="pageNumber"의 형태다. FreeBoardController#getFreeBoardPage(@RequestParameter(value = "page")int page) 메서드를 통해 get 요청을 받는다. 해당 메서드는 FreeBoardService#getFreeBoardPage(int page) 메서드를 호출하고 받은 결과값을 반환한다. 이 때 HTTP 상태 코드는 200 OK다. FreeBoardService#getFreeBoardP.. 2023. 11. 29.
9장. LSP: 리스코프 치환 원칙 리스코프 치환 원칙 S 타입의 객체 o1 각각에 대응하는 T 타입 객체 o2가 있고, T 타입을 이용해서 정의한 모든 프로그램 P에서 o2의 자리에 o1을 치환하더라도 P의 행위가 변하지 않는다면, S는 T의 하위타입이다. 뭔 소리야 쉽게 설명하면 다음과 같다. 프로그램 P에서 상위 타입 객체 T를 사용하고 있다면, T를 T의 하위타입 객체인 S로 대체해도 제대로 프로그램이 돌아가야한다. 상속을 사용하도록 가이드하기 알림 전송 애플리케이션을 사용한다고 해보자. 애플리케이션에서는 Notifier 객체를 사용한다. 그런데, 카카오톡으로 알림을 보내야 할 때도 있고, 이메일로 보내야 할 때도 있고, 문자로 보내야 할 때도 있다. 이 때, KakaoNotifier, EmailNotifier, SMSNotifie.. 2023. 11. 29.
반응형