Entity Manager and Repository

8598 ワード

Entity Managerとは?
Entity Managerを使用してEntityを管理できます.
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);
getConnectionを使用してEntityを管理することもできます.
Find options
すべてのリポジトリとEntity Managerには、query builderを使用することなく、必要なデータをクエリーするための基本的なfind機能が用意されています.
{後で作成}
Query Builder
Query BuilderはタイプORMの中で最も強力な機能の一つです.
SQLクエリーの代わりに便利な構文を使用します.
SQLクエリ文の代わりにQuery Builderが自動的にEntityを変換します.
サンプル選択(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の作成
  • using connection
  • import {getConnection} from "typeorm";
    
    const user = await getConnection()
        .createQueryBuilder()
        .select("user")
        .from(User, "user")
        .where("user.id = :id", { id: 1 })
        .getOne();
    ``