Insert 와 createQueayBuilder().insert 를 이용하면
하나의 레코드 혹은 여러 레코드를 한번에 데이터베이스에 입력이 가능하다.
공식문서에서는
insert 를 할때는 createQueayBuilder().insert 를 이용한 방법이 성능적인 측면에서 가장 효율적이다.
[https://orkhan.gitbook.io/typeorm/docs/insert-query-builder]
정리
- 간단한 대량 삽입: insert 메서드를 사용하면 코드가 간결하고 이해하기 쉬움.
- 복잡한 대량 삽입: createQueryBuilder는 복잡한 SQL 쿼리와 조건을 처리하는 데 더 적합
- 성능: 대량의 데이터를 삽입할 때는 createQueryBuilder가 더 나은 성능을 발휘
insert 사용 예시
mport { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';
@Injectable()
export class UserService {
constructor(
@InjectRepository(User)
private userRepository: Repository<User>,
) {}
async createUsers() {
const users = [
{ name: 'John Doe', email: 'john.doe@example.com' },
{ name: 'Jane Doe', email: 'jane.doe@example.com' },
{ name: 'Alice', email: 'alice@example.com' },
];
await this.userRepository.insert(users);
}
}
createQueryBuilder 사용 예시
mport { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';
@Injectable()
export class UserService {
constructor(
@InjectRepository(User)
private userRepository: Repository<User>,
) {}
async createUsers() {
const users = [
{ name: 'John Doe', email: 'john.doe@example.com' },
{ name: 'Jane Doe', email: 'jane.doe@example.com' },
{ name: 'Alice', email: 'alice@example.com' },
];
await this.userRepository.createQueryBuilder()
.insert()
.into(User)
.values(users)
.orIgnore() // 오류를 무시하고 유효한 데이터가 포함된 행만 삽입
.execute();
}
}
create
'프로그래밍 > Nest.js' 카테고리의 다른 글
[ Nest.js ] Lock 을 이용한 데이터 중복 저장 방지 구현 (0) | 2024.07.18 |
---|---|
[ Nest.js ] cross-validator 의 데코레이터가 적용이 안되는 경우 (0) | 2024.07.14 |
[ Nest.js ] cross-validation 을 이용하여 데코레이션 만들기 (0) | 2024.07.03 |
[ Nest.js ] 테스트 코드 작성 FIRST 원칙 (0) | 2024.06.30 |
[ Nest.js ] Logger 구현 (0) | 2024.06.26 |