***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다
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