Back-end
-
[SpringBoot] Repository에서 nativeQuery 사용시 / private final로 변수 선언하는 이유 / Page vs. SliceBack-end/TIL 2022. 3. 16. 09:39
# Repository에서 nativeQuery 사용시 //Bad @Query(...) Page findAll(Pageable pageable); //Good @Query(...) Page findAll(Pageable pageable); public interface DtoVo { Long getId(); } 첫 번째 방식: Object 배열의 인덱스로 접근해야 하므로, 오류 발생 가능성이 크다. 두 번째 방식 interface에 필요한 필드를 불러오는 getter 메서드만 선언해둔다. Spring Data JPA에서 @Query()에서 설정한 변수 값으로 DtoVo에 바로 매핑해준다. (nativeQuery외에 일반 JPQL에서도 동일하게 작동함) //예시 코드 @Query("select pm.id ..
-
[SpringBoot] JPA를 통해 엔티티 반환시 DtoVo 사용하기Back-end/TIL 2022. 3. 16. 09:28
📌 상황 Spring Data JPA를 통해 엔티티 조회시 기존에는 아래와 같이 코드를 작성하였다. //기존 코드 Page findByMenuKorNameContains(String menuKorName, Pageable pageable); Page findByMenuEngNameIgnoreCaseContains(String menuEngName, Pageable pageable); 위의 코드가 틀린 것은 아니지만, 몇가지 문제점이 존재한다. 1. 기존의 방식은 엔티티 자체가 반환되기 때문에 만약 조회시 특정 필드 값만 필요하다면, 불필요한 필드 값이 모두 반환되는 상황이다. 2. 불필요한 필드가 많거나 해당 필드의 타입이 text와 같이 사이즈가 크다면, 성능 이슈가 발생할 수 있다. 즉, 기존의 방식..
-
APITestCase와 APIClient를 활용한 Django Rest Framework 단위 테스트 코드 작성Back-end/Django 2022. 2. 5. 23:44
사이드 프로젝트의 단위 테스트를 작성하며 알게된 내용을 정리하였다. #️⃣ APIClient를 사용해 Request 생성 시 header 추가하기 response = self.client.post( path=url, HTTP_{Header 이름}={값}) 위와 같이 인자로 맨 앞에 HTTP_ 붙여 전달해주면 된다. 참고) Stack Overflow - API Client Custom Header #️⃣ reverse() 사용 시 url path 변수 값 설정하기 # 아래 2개는 동일한 표현임 url = "/account//userInfo" url = reverse(viewname="{django app 이름}:{urlpatterns 등록 시 설정한 name}", args=[self.user_id]) 위와..
-
Docker Nginx, Certbot & Let's Encrypt를 사용해 SSL 인증서 발급Back-end/Docker 2022. 1. 30. 22:27
*Tistory에 내용을 통합하기 위해 velog에 작성했던 내용을 첨부하였음 https://velog.io/@fordevelop/Docker-Nginx-Certbot-Lets-Encrypt%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%B4-SSL-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89 [SSL] Docker Nginx, Certbot & Let's Encrypt를 사용해 SSL 인증서 발급 Ubuntu 환경에서 Docker Nginx & Certbot와 Let's Encrypt를 사용해 SSL 인증서 발급하기 velog.io