본문 바로가기

Programming134

Pull Request 020. 회원 가입 및 로그인 기능 TDD로 구현하기 - 회원 가입 Service 계층 구현 어떤 순서로 기능을 구현해야 할까를 고민하다가, 어짜피 이후 기능할 구현에 모두 로그인 로직이 연관되어있을 것이라 생각해 로그인 기능을 먼저 구현하고자 했다. 그런데 로그인을 하려면 회원이 있어야 한다. 그렇다, 로그인 구현을 위해서는 회원 가입을 먼저 구현해야한다는 것이다. 먼저 회원 가입부터 구현해보자. 회원 가입 로직은 다음과 같다. MemberController#postMember(dto) 메서드를 통해 회원 가입 요청을 받는다. 이 때 urn은 "/member"로 설정하며, MemberService#postMember(dto)로 반환받은 Response DTO를 ResponseEntity객체로 감싸 반환한다. MemberService#postMember(dto)는 비밀번호 암호화, 권한 설정 등.. 2023. 12. 4.
PasswordEncoder의 작동 원리와 테스트하기 어려운 이유 회원 가입 과정에서 비밀번호의 암호화가 잘 되었는지를 테스트하고자 했는데, 지속적으로 실패했다. 내 생각은 다음과 같았다. '과정 전부 거치고 나온 Response DTO의 비밀번호랑 따로 PasswordEncoder로 인코딩한 비밀번호가 같은지를 검증하면 되지 않을까?' 뭐 꽤 괜찮은 생각이라고 생각했다. PasswordEncoder는 BCrype 그런데, 막상 진행해보니까 잘 되지를 않더라. 그래서 한 번, 같은 패스워드를 두 번 돌려서 결과를 확인해봤다. @Test void test(){ PasswordEncoder passwordEncoder1 = PasswordEncoderFactories.createDelegatingPasswordEncoder(); String password = "1234".. 2023. 12. 4.
Pull Request 019. 페이징 처리 시 페이지 정보도 Response에 함께 담아주기 기존의 페이징 처리에서 문제점은 페이지 정보가 담기지 않는다는 점이었다. 엔티티 정보는 전부 담기지만, 해당 페이지가 몇 번째 페이지인지, 페이지에는 몇 개의 요소가 있는지, 전체 데이터는 몇 개이고 전체 페이지는 몇 페이진지의 정보가 담기지 않았다. 이렇게 페이징 처리가 진행되면 데이터는 넘어가지만, 실질적인 페이징 처리는 프론트엔드 단에 맡겨야한다. 심지어 이 과정 역시 프론트엔드 단에서 전체 데이터 갯수를 알고 있어야 가능하다. 여러 면에서 문제가 존재한다. 따라서 서버 레벨에서 페이지 정보도 함께 담아줘야만이 진정한 의미로 페이징 처리를 끝냈다고 볼 수 있다. @GetMapping public ResponseEntity getFreeBoardPage(@RequestParam(name = "page.. 2023. 12. 1.
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.
반응형