Entity Manager and Repository

꼴쥐마스타·2021년 7월 30일
0

TypeORM

목록 보기
3/5

Entity Manager란

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란

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);

getConnection을 사용하여 Entity관리도 가능하다.

Find options

모든 repository와 Entity manager는 query builder를 사용하지 않고 필요한 데이터를 쿼리하는데 사용할 수 있는 기본적인 find 기능이 제공된다.

{ 추후작성}

Query Builder

QueryBuilder는 Type ORM의 가장 강력한 기능 중 하나로,
편리한 구문을 사용하여 SQL쿼리를 대체한다.
SQL쿼리문을 대체한 Query Builder는 자동으로 Entity를 변환시켜준다.

예시 Select(sql)

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"
}

Query Builder만들기

  1. using connection
import {getConnection} from "typeorm";

const user = await getConnection()
    .createQueryBuilder()
    .select("user")
    .from(User, "user")
    .where("user.id = :id", { id: 1 })
    .getOne();
``

profile
백엔드 엔지니어 꼴쥐입니다.

0개의 댓글