카테고리 없음

패스트캠퍼스 환급챌린지 37일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기

Laftel 2025. 4. 10. 15:33
반응형

***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다 
Repository 레포지토리
"Repository는 지정한 Entity에 대한 CRUD 쿼리를 할 수 있게 해준다."
개발자는 직접적인 SQL 쿼리를 작성하는 대신 Repository가 제공하는 메서드를 통해 데이터베이스와 상호작용합니다.
"TypeORM에 정의돼있는 메서드들을 사용해서 직접 SQL을 작성하지 않더라도 데이터 관리를 할 수 있다."
TypeORM은 Repository 인터페이스 내에 미리 정의된 메서드 (예: find(), save(), delete() 등)를 제공합니다. 개발자는 이러한 메서드를 호출함으로써 기본적인 데이터베이스 작업을 수행할 수 있으며, 직접적인 SQL 쿼리 작성의 번거로움과 잠재적인 오류를 줄일 수 있습니다. ORM은 객체와 데이터베이스 레코드를 매핑하여 개발자가 객체 지향적인 방식으로 데이터를 다룰 수 있도록 돕습니다.

const userRepository = dataSource.getRepository(User);
const user = await userRepository.findOneBy({
  id: 1,
});

user.name = "Code Factory";
await userRepository.save(user);

중요한 레포지토리 목록들

1. Create & Delete 관련: (생성 및 삭제 관련)

  • create(): 새로운 객체를 생성하는 기능입니다.create()는 save()와 다르게 데이터베
  • 이스에 데이터를 생성하지 않고 "객체"를 생성만 한다는걸 꼭 기억하자!
  • save():
  •  save() 메서드에 저장할 Entity를 입력 해
  • 주면 저장 할 수 있다.
  • • create()와 다르게 실제 데이터베이스에
  • 저장이 된다.
  • • 만약에 이미 Row가 존재한다면 (primary
  • key 값으로 구분) 업데이트한다. (주의할
  • 것!)
  • • 여러 객체를 한번에 저장도 가능하다.
  • upsert():
  •  update와 insert를 합친게 upsert()
  • 다.
  • • 데이터 생성 시도를 한 후 만약에 이미
  • 존재하는 데이터라면 업데이트를 진행
  • 한다.
  • • save()와 다르게 upsert()는 하나의
  • transaction에서 작업이 실행된다.
  • delete(): 
  •  Row를 삭제할때 사용된다.
  • • 대체적으로 Primary Key를 사용해서
  • 삭제한다.
  • • 원한다면 findOptionsWhere 조건으
  • 로 여러 값을 삭제 할 수도 있다.
  • softDelete(): 비 영구적으로 삭제하는 기능
  • restore(): softDelete된 Row를 다시 복구하는 기능입니다.

2. Update 관련: (업데이트 관련)

  • update():
  •  첫번째 파라미터에 검색 조건을 입력해
  • 준다.
  • • 두번째째 파라미터에 변경 필드를 입력해
  • 준다.
  • increment(): 특정 필드의 값을 증가시키는 기능입니다.
  • decrement(): 특정 필드의 값을 감소시키는 기능입니다.

3. Find 관련: (조회 관련)
• find() : 해당되는 Row를 모두 반환한
다.

• findOne() : 해당되는 첫번째 Row를
반환한다. 없을경우 null

• findAndCount() : 해당되는 Row와
전체 갯수를 반환한다.
FindOptions
• 모든 find 관련된 API는 FindOptions를
아규먼트로 받는다.

• FindOptions는 어떤 값들을 불러올지 필
터링하는 역할을 한다.

• FindOptions의 정확한 TS 타입 명칭은
FindOneOptions와 FindManyOptions
로 정의 돼있다.

· FindManyOptions는 FindOneOptions
를 상속받고 skip, take 두가지 프로퍼티
가 더 존재한다.
FindOptions 중요 옵션
Select

불러올 Column을 지정 할 수 있다.

Where

필터링할 조건을 설정 할 수 있다.

Relations

불러올 관계 테이블을 지정 할 수 있다.

Order

정렬을 지정 할 수 있다.

Cache

캐싱 기간을 지정 할 수 있다.
FindManyOptions

Skip

정렬 후 스킵할 데이터 갯수를 정할 수 있다.

Take

처음 몇개의 데이터를 불러올지 정할 수 있다.

  • exists(): 특정 조건에 맞는 데이터가 존재하는지 여부 boolean 값을 반환 받는다
  • preload():
  •  preload()는 데이터베이스에 저장된
  • 값을 Primary Key 기준으로 불러오고
  • 입력된 객체의 값으로 프로퍼티를 덮어
  • 쓴다.
  • • 덮어쓰는 과정에서 데이터베이스에 업
  • 데이트 요청이 보내지지는 않는다.
  • query(): 직접적인 데이터베이스 쿼리를 실행할 수 있는 기능입니다.

4. 통계 관련 및 기타: (통계 관련 및 기타)

  • count(): 특정 조건에 맞는 데이터의 개수를 세는 기능입니다.
  • sum(): 특정 필드의 값의 합계를 계산하는 기능입니다.
  • average(): 특정 필드의 값의 평균을 계산하는 기능입니다.
  • minimum(): 특정 필드의 값의 최소값을 찾는 기능입니다.
  • maximum(): 특정 필드의 값의 최대값을 찾는 기능입니다.
  • query(): (Find 관련에도 있지만) 더 복잡한 통계 쿼리 등을 실행하는 데 사용될 수 있습니다.

#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB

반응형