😇 1. Repository란?
✅ TypeORM에서 제공하는 데이터 접근 계층(Data Access Layer)으로, 데이터베이스 작업(CRUD)을 수행하기 위한 API를 제공해준다.
주요 특징 or 기능
- 데이터 검색
- 데이터 생성, 업데이트, 삭제
- 관계 데이터 처리
- 복잡한 쿼리 작성(QueryBuilder)
주요 메서드
메서드 이름 | 설명 |
---|
find | 조건 없이 모든 데이터를 조회 |
findOne | 단일 데이터 조회 |
save | 엔티티를 저장하거나 업데이트 |
remove | 데이터를 삭제 |
count | 데이터의 개수 조회 |
create | 새 엔티티를 생성하지만 저장하지 않음 |
update | 데이터를 부분적으로 업데이트 |
이 외에도 다양한 메서드를 지원한다.
👌 메서드 사용예시
1. find
// 모든 사용자 조회
const allUsers = await userRepository.find();
// 조건에 맞는 사용자 조회
const activeUsers = await userRepository.find({
where: { isActive: true },
order: { createdAt: 'DESC' },
});
- 조건 없이 모든 데이터를 조회하거나 특정 조건으로 데이터를 조회한다.
2. findOne
// 특정 ID로 사용자 조회
const user = await userRepository.findOne({ where: { id: 1 } });
// 이메일로 사용자 조회
const userByEmail = await userRepository.findOne({ where: { email: 'john@example.com' } });
- 단일 데이터를 조회한다. 조건이 없으면 첫 번째 데이터를 반환한다.
3. save
const newUser = userRepository.create({ name: 'John', email: 'john@example.com', isActive: true });
await userRepository.save(newUser);
- 엔티티를 데이터베이스에 저장하거나 업데이트한다.
4. remove
// 사용자 삭제
const userToDelete = await userRepository.findOne({ where: { id: 1 } });
if (userToDelete) {
await userRepository.remove(userToDelete);
}
- 엔티티를 데이터베이스에서 삭제한다. 삭제하려면 먼저 엔티티를 불러와야 한다.
5. count
// 모든 사용자 수
const totalUsers = await userRepository.count();
// 활성화된 사용자 수
const activeUsersCount = await userRepository.count({ where: { isActive: true } });
- 전체 or 특정 조건에 맞는 데이터의 개수를 반환한다.
6. create
// 새 사용자 생성 (저장하지 않음)
const newUser = userRepository.create({ name: 'Jane', email: 'jane@example.com' });
console.log(newUser);
- 새로운 엔티티 인스턴스를 생성하지만 데이터베이스에는 저장하지 않는다. (이후에 저장 가능)
7. update
// 사용자 이름 업데이트
await userRepository.update({ id: 1 }, { name: 'Updated Name' });
- 특정 조건에 맞는 데이터를 부분적으로 업데이트한다.
참조