페이지네이션(Pagenation) 구현하기 - (1)
·
Back/NestJS
페이지네이션을 구현하기 전에 이론적으로 정리하며 공부하려고 한다!  Pagenation의 주요 특징[ 데이터를 나눠서 보여줌 ]한 번에 모든 데이터를 보여주지 않고, 일부만 보여줌 (예: 1페이지에 10개씩).사용자 입장에서 가독성 향상 + 로딩 속도 개선.[ 서버/클라이언트의 부담 감소 ]전체 데이터를 한 번에 처리하면 리소스 낭비가 커지는데, 페이징하면 필요한 만큼만 가져오니까 효율적이야.페이지 이동 기능 제공사용자는 원하는 페이지로 쉽게 이동 가능 (1, 2, 3... 다음, 이전 등).데이터 정렬과 필터링과 함께 사용 가능정렬, 검색과 함께 사용하면 다양한 조건의 페이징 처리가 가능함  페이지네이션 구현에는 보통 두 가지 방식이 있다. 1. Offset 기반 PaginationLIMIT, OFFS..
[NextJS] 프로젝트 생성하기 with Yarn berry 4.4.0
·
Back/NestJS
yarn create next-app .현재 경로에 next 프로젝트 생성 yarn add next@14 react@18 react-dom@18 Next.js 14 버전에서는 next.config.ts 파일을 공식적으로 지원하지 않습니다.즉, TypeScript(.ts)로 next.config.ts를 작성하는 것은 지원되지 않으며, .js 또는 .mjs 형식으로 변환해야 함 mv next.config.ts next.config.mjs 변경후 파일 내용 다음과 같이 수정/** @type {import('next').NextConfig} */const nextConfig = { reactStrictMode: true};export default nextConfig; PnP 환경에서는 TypeScript가 ..
[NestJS] JWT(JSON Web Token) - 로그인 API 구현과 암호화
·
Back/NestJS
JWT(JSON Web Token)는 클라이언트와 서버 간에 정보를 안전하게 전달하기 위해 사용되는 토큰이다크게 헤더(header), 페이로드(payload), 서명(signature) 세 부분으로 구성되는데, 이 세 부분이 결합되어 하나의 토큰을 형성한다 JWT 토큰을 구현하기 위해서는 Access Token과 Refresh Token 이렇게 두 종류의 토큰이 사용된다이 두 가지 토큰은 각기 다른 목적과 특성을 가지고 있으며, 보안성과 사용자 경험을 동시에 고려한 토큰 관리 방법이다. Access Token[목적] Access Token은 사용자 인증을 위해 사용된다이 토큰은 클라이언트가 서버에 API 요청을 보낼 때 포함되며, 서버는 이 토큰을 사용해 요청이 인증된 사용자인지 확인한다 [life cy..
[NestJs] @InjectRepository 데코레이터 with TypeORM
·
Back/NestJS
NestJS에서 @InjectRepository 데코레이터는 TypeORM과 함께 사용되어 특정 엔티티의 리포지토리를 서비스 클래스에 주입하기 위해 사용됩니다! 이 데코레이터는 의존성 주입을 통해 데이터베이스와의 상호작용을 보다 간편하게 관리할 수 있도록 도와줘요  이 예제에서는 MySQL 데이터베이스를 사용하여 사용자(User) 데이터를 저장하고, GraphQL을 통해 사용자 데이터를 조회하고 추가하는 API를 구축합니다.@InjectRepository 데코레이터 사용 방법// npm 설치npm install @nestjs/typeorm typeorm mysql2npm install @nestjs/graphql @nestjs/apollo graphql apollo-server-express// yarn..
[MYSQL] 오류코드 1452
·
Back/Database
table이 fk로 엮여있고 순서가 기억나지 않는다면 SET foreign_key_checks = 0; 를 사용해서 fk를 잠깐 무력화 시킨다음 INSERT를 하면 테이블 변경에 성공한다 변경 후에는 SET foreign_key_checks = 1; 을 해주면 됨
[스프링부트 입문] 시리즈 #05 회원 서비스 개발 + 테스트
·
Back/Spring(Springboot)
스프링부트 입문 시리즈 #01 프로젝트 생성하기 #02 정적페이지 만들고 화면 띄우기 #03 회원 관리 페이지 만들기 #04 회원 리포지토리 테스트케이스 #05 회원 서비스 개발 + 테스트 👈 지난 시간에는 회원 리포지토리를 만들어 회원 등록, 회원 검색 기능을 구현해 보고 Test Case를 만들어 테스트까지 모두 마쳤다 이번에 만들 회원 서비스 만들어놓은 회원 도메인과 리포지토리를 활용해서 실제 비즈니스 로직을 구현할 것이다 회원 서비스 클래스 생성 src / main / java / yeon.hello_spring 에서 service 패키지를 만들고 그 안에 MemberService 클래스를 생성한다 회원가입 메소드 회원가입 기능을 구현할 때는 리포지토리에 member를 save 해주기만 하면 된다..
[스프링부트 입문] 시리즈 #04 회원 리포지토리 만들기 + 테스트
·
Back/Spring(Springboot)
스프링부트 입문 시리즈 #01 프로젝트 생성하기 #02 정적페이지 만들고 화면 띄우기 #03 회원 관리 페이지 만들기 #04 회원 리포지토리 만들기 + 테스트 👈 1. Test Case 개발한 기능을 테스트할 때 Java의 main 메소드를 통해서 실행하거나, 웹 어플리케이션의 Controller를 통해서 해당 기능을 실행하는데 이런 방법은 준비와 실행이 오래 걸리고, 반복하기 어렵고, 여러 테스트를 한번에 실행하기 어렵다는 단점이 있다 Java는 JUnit이라는 프레임워크를 이용해 이러한 문제를 해결한다 src / test에 이미 테스트를 할 수 있는 공간이 준비되어있다 scr / test/ java에 있는 yeon.hello_spring 패키지 안에 repository라는 패키지를 만들고 Memory..
[스프링부트 입문] 시리즈 #03 회원 관리 페이지 만들기
·
Back/Spring(Springboot)
스프링부트 입문 시리즈 #01 프로젝트 생성하기 #02 정적페이지 만들고 화면 띄우기 #03 회원 관리 페이지 만들기 👈 #04 회원 리포지토리 테스트 케이스 회원관리 페이지는 다음과 같은 순서로 만든다 비즈니스 요구사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 DB: 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 스프링의 전반적인 구조를 이해하기 위해 단순한 비즈니스를 구현할 것이다 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비즈니스 도메인 객체 ex) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메..
[스프링부트 입문] 시리즈 #02 정적페이지 만들고 화면 띄우기
·
Back/Spring(Springboot)
스프링부트 입문 시리즈 #01 프로젝트 생성하기 #02 정적페이지 만들고 화면 띄우기 👈 #03 회원 관리 페이지 만들기 #04 회원 리포지토리 테스트 케이스 지난시간에는 스프링 부트 프로젝트를 생성했다 생성된 프로젝트의 폴더구조를 보면 src 폴더에 main과 test 폴더가 있다 main 폴더의 java 폴더에는 실제 패키지와 소스파일이 있고, resources에는 실제 자바 코드파일을 제외한 설정파일이 들어가게 된다 (자바 파일을 제외한 모든 파일은 resources에 들어간다고 보면 됨) test 폴더는 테스트 코드와 관련된 소스들이 들어간다 이렇게 test폴더가 따로 존재할 정도로 요즘 개발 트렌드에서 test 코드는 정말 중요하다 그 다음으로 중요하게 살펴볼 파일은 build.gradle 파일..