본문 바로가기

Back-End34

WIL 230730 : JPA 왕초보단계를 아주 살짝 벗어나기 FACTS 이번 일주일 동안 있었던 일, 내가 한 일 : 월요일 뉴스피드 과제를 마친 후, 화요일부터 4일간 JPA 심화강의를 진행했다. FEELINGS 나의 감정적인 반응, 느낌 : 이제 슬슬 내가 배운 것들이 실무에서 얼마나 작은 부분이고 기본적인 부분인지 감이 온다. 아직 갈길이 멀고 지금껏 배워온 것들에도 부실한 부분이 많다는 느낌. FINDINGS 그 상황으로부터 내가 배운 것, 얻은 것 : 그동안 구현에 급급하며 기술만 쭉쭉 배우며 진도를 나갔는데, 이번엔 유야무야 지나갔던 기술들을 파보며 다양한 방법으로 최적화 하는 걸 보며 이런 세세한 팁들이 많이 쌓이고 쌓여야 곧 나의 내공이 되겠구나 싶었다. JPA인터페이스나 상속관계들을 보며 구현체의 실제 코드도 보며 완전히 이해하고 있어야 응용을 할.. 2023. 7. 30.
TIL 230728 : pageable 기능 활용 하기. (+sortBy) 왜 쓰는걸까 기존에 repository에서 findAll 하면 죄다 가져왔다. 지금은 더미데이터 몇십개인데, 몇십만개가 된다면? 어차피 다 못 쓰는데 이는 낭비이다. 그래서 pageable을 이용해 원하는 만큼 데이터를 페이지 나눠주고 원하는 페이지를 가져오고 원하는 기준으로 정렬해서 가져다주는 기능을 제공하고 이를 통해 편하게 구현할 수 있다. Pageable 쓰는 흐름 1. 페이지를 나누는 기준(필수), 정렬기준(옵션)을 정해서 pageable객체를 생성한다. sort정보는 필수는 아닌것을 생성자 파라미터 정보로 알 수 있다. 2. pageable객체를 쿼리메소드에 넣어준다. findAll() 파라미터를 보면 pageable을 받아서 처리해줄 수 준비가 되어있는 것을 확인할 수 있다. 3. Dto로 .. 2023. 7. 28.
TIL 230727 : 튜터님 예제 보며 정리한 마이크로 팁들 JPA심화 주차로 들어섰다. 앞서 배웠던 내용들을 다시 훑기도 하면서 뼈와 살이 될것같은 개선점들이 크고많게 있었다. 하나둘 기록해두고 복습하며 체화시켜보기로 한다. 어노테이션도 분류해주기 lombok / jpa 현업에서 자주 쓰인다고 한다. @ToString → 필드명 같이 출력. @Exclude 연관관계 매핑한건 출력 제외할때 List말고 Set으로 중복제거하고 LinkedHashSet으로 생성해주면 순서까지 보장해준다 지금 생각해보면 객체가 중복으로 들어올 일이 없기도 하고 중복으로 오면 손해였는데 관성적으로 List를 사용했다. 위처럼 LinkedHashSet을 생성하면 중복도 제거하고 순서도 보장이 된다. 이에 대해 자세히 성능차이를 볼 수 있는 자료나 이를 테스트해볼 기회가 되면 해보기로 한다.. 2023. 7. 28.
TIL 230726 : CustomException 사용하기 예외처리 또한 개발의 중요한 역량 중 하나로 느껴진다. 오늘은 커스텀예외처리를 만들고 관리하는 법을 배웠다. CustomException 사용하기 (에러 메시지 관리 messages.properties) 커스텀예외처리를 알맞게 쓰는 게 어렵지, 쓰는 건 어렵진않다. 예외 클래스 만들기 원하는 이름으로 만들고 표준예외를 상속받는다. 생성자로 예외를 만들기 (던져주기) 원래는 IllegalArgumentException이 있던 곳에 만들어둔 예외를 생성하기만 하면된다. 위의 경우엔 메시지를 받는 생성자를 만들어 두었다. CustomException '잘' 썼을 때의 장점 아마 이 부분이 더 중요할 것 같다. 잘 쓰는 것이 어렵다. 1. 일단은 표준예외를 우선한다. 이펙티브 자바 책에서는 이렇게 소개한다. -.. 2023. 7. 26.
TIL 230725 : RestControllerAdvice로 전역 예외 처리 이전 코드 현재 모든 컨트롤러에 비슷한 예외처리 문구로 try-catch문이 주렁주렁 달려있다. @Controller Advice라는 전역예외처리 기능을 이제야 알아서 안타깝지만 이제라도 알아서 리팩토링을 해본다. 추가 코드 common패키지에 해당 클래스를 추가해두었다. 추가된 코드를 하나하나 살펴보자. @RestControllerAdvice Controller와 RestConroller의 차이처럼 해당 메소드가 실행됐을 때 결과값을 바디에 바로 보내주는 기능이 추가된것이다. @ControllerAdvice 어노테이션으로 선택하여 사용이 가능하다. 아래는 @ControllerAdvice에 대한 설명이다. @ExceptionHandler, @InitBinder, @ModelAttribute 이 세 메소드.. 2023. 7. 25.
TIL 230720 : ResponseEntity로 응답 메시지 보내기 기존 코드 기존에 상태코드와 메시지를 포함해서 전달해달라는 요청을 받고 위처럼 바로body에 String으로 담아서 전달했다. 이걸 보고 한 팀원께서 리뷰를 해주셨는데, ResponseEntity에 ApiResponseDto를 담아서 전달하는 형태로 통일하자고 했다. 수정된 코드 ResponseEntity타입으로 반환을 명시했고, 지네릭스로 미리 만들어둔 ApiResponse를 담기로 선언했다. ApiResponse 클래스는 위와 같이 상태코드와 상태메시지를 담는 형태이고, @ToString을 붙여줘 자동으로 해당 객체를 반환해도 필드명을 포함해서 전달하도록 했다. (팀원으로부터 처음 알게 된 기능) 해당 api의 성공과 실패시의 return을 각각 위와 같이 작성했다. ApiResponseDto의 생성.. 2023. 7. 24.