Develop/Spring

Develop/Spring

[Spring Boot] count를 구현하는 5가지 방법

개요 프로젝트를 하다보면 count를 자주 사용하게 된다. 게시글의 수, 댓글의 수, 친구 수, 알림 수, 통계 처리 등 아주 다양한 count 요구사항이 존재한다. Spring JPA를 사용하면 count 키워드 (쿼리 메소드)를 이용해 아주 쉽게 해당 기능을 구현할 수 있다. 하지만 우리가 무심코 사용하는 count 쿼리, 과연 데이터 수가 많을 때에도, 그리고 request 수가 (또는 TPS) 많을 때에도 잘 작동할까? count 를 구현하는 5가지 방법들과, 각각의 장단점을 알아보자. 개발 환경 1. Framework : Spring Boot 2.6 2. Programming Language : Java 11 3. DataBase : MySQL 8 4. OS : macOS Ventura 13.2..

Develop/Spring

[Spring Boot] ConstraintValidator를 이용해 나만의 validator annotation 만들기

개요 데이터를 생성 또는 수정하는 REST API를 만들다보면 종종 클라이언트가 보낸 값을 검사하는 과정이 필요해진다. 유효한 이메일 형식인지 확인하거나, 입력값의 null 여부를 확인하는 등의 과정이다. 보통은 프론트엔드에서 화면 UI를 구성하기 위해 한 번 유효성 체크를 해주지만, 서버는 클라이언트가 아닌 다른 곳에서도 요청을 받을 수 있고, 클라단의 데이터 위변조 가능성도 무시할 수 없기에 서버 측에서도 한 번 더 유효성 검사를 해주는게 좋다. spring boot는 이런 개발자의 수고를 덜어주기 위해, 많이 사용되는 유효성 검사들을 'spring-boot-starter-validation' 라이브러리를 통해 제공한다. 하지만 프로젝트 요구사항은 항상 제각각이므로 위 라이브러리로 필드 입력 값을 ..

Develop/Spring

[Spring Boot] 테스트 컨테이너로 테스트하기

개요 개발을 하면 할 수록, 테스트의 중요함에 대해 깨닫게 된다. 규모가 큰 프로젝트에서 코드 변경으로 인한 예기치 못한 사이드 이펙트를 방지해주고, 의도한 대로 기능이 동작하는지 빠르게 확인할 수 있게 만들어주는 테스트 코드. 작성한 후 돌려보는 것 까지 필수로 해야겠지? 🤔 테스트 컨테이너를 이용해 테스트 멱등성을 유지하며 손쉽게 프로젝트 테스트를 수행해보자! 테스트 환경을 만드는 세 가지 방법 📚 Test용 DB를 세팅하는 여러가지 방법 대부분의 경우 우리는 운영 환경별로 Property (Properties)를 분리해서 사용한다. 각 property 내부엔 active 환경에 맞는 DB, Log level 등 다양한 환경 설정이 존재한다. 개인적인 경험으로는, prod(운영 서버), dev(개발 ..

Develop/Spring

[Spring Boot 3] SpringDoc과 Swagger를 이용해 API 문서화 자동화하기

💁‍♀️ 앗! 세상은 위험하니 이 API 문서화 자동화 툴을 챙겨 가렴! 📌 시작하기 전, 내가 API나 REST API에 대해 잘 모른다면? 더보기 ✏️ API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말이다. 이렇게 말하면 한국어인데도 뭔 소린지 모르겠다. (영어가 섞여있긴 해?) 좀 더 간단하게 풀어보자면, 일종의 식당 종업원이라고 보면 된다. 식당에 방문한 손님이 메뉴도 보지 않고, 주방장에게 먹고 싶은 음식을 바로 요청한다고 생각해 보자. 우리 집은 보리밥 정식 파는 집인데 바삭한 황금올리브 한 마리 냉큼 튀겨오라고 난동을 부리는 거다. 정말 곤란하다. 따라서 API를 앞단에 세워 정해진 규격에 맞춰진 요청만 받을 수 있게 하는 거다...

스껄한우디
'Develop/Spring' 카테고리의 글 목록 (3 Page)