Entity Manager를 사용하여 Entity를 관리(CRUD)할 수 있다.
import {getManager} from "typeorm";
import {User} from "./entity/User";
const entityManager = getManager();
const user = await entityManager.findOne(User, 1);
user.name = "Umed";
await entityManager.save(user);
Repository는 Entity Manager와 동일하지만 작업이 특정 Entity로 제한된다.
import {getRepository} from "typeorm";
import {User} from "./entity/User";
const userRepository = getRepository(User); // you can also get it via getConnection().getRepository() or getManager().getRepository()
const user = await userRepository.findOne(1);
user.name = "Umed";
await userRepository.save(user);
모든 repository와 Entity manager는 query builder를 사용하지 않고 필요한 데이터를 쿼리하는데 사용할 수 있는 기본적인 find 기능이 제공된다.
{ 추후작성}
QueryBuilder는 Type ORM의 가장 강력한 기능 중 하나로,
편리한 구문을 사용하여 SQL쿼리를 대체한다.
SQL쿼리문을 대체한 Query Builder는 자동으로 Entity를 변환시켜준다.
const firstUser = await connection
.getRepository(User)
.createQueryBuilder("user")
.where("user.id = :id", { id: 1 })
.getOne();
해석하면 아래와 같다.
SELECT
user.id as userId,
user.firstName as userFirstName,
user.lastName as userLastName
FROM users user
WHERE user.id = 1
결과값은 아래와같다.(예시)
User {
id: 1,
firstName: "Timber",
lastName: "Saw"
}
import {getConnection} from "typeorm";
const user = await getConnection()
.createQueryBuilder()
.select("user")
.from(User, "user")
.where("user.id = :id", { id: 1 })
.getOne();
``