이전에는 두 테이블을 조인하는 쿼리가 필요한 경우 queryBuilder를 사용했었는데, ORM을 더 효과적으로 사용하기 위해 기본적인 find 메서드에서 사용할 수 있는 옵션들 중 조인과 관련있는 내용들을 정리해보았다.

옵션 설명

https://typeorm.io/find-options

Select 옵션

Relations 옵션

Relations 유무에 따른 쿼리 비교

Relation O

SELECT `project`.`id`                                  AS `Project_id`,
       `project`.`title`                               AS `Project_title`,
       `project`.`subject`                             AS `Project_subject`,
       `project`.`created_at`                          AS `Project_created_at`,
       `project`.`updated_at`                          AS `Project_updated_at`,
       `Project__Project_projectToMember`.`id`         AS
       `Project__Project_projectToMember_id`,
       `Project__Project_projectToMember`.`created_at` AS
       `Project__Project_projectToMember_created_at`,
       `Project__Project_projectToMember`.`updated_at` AS
       `Project__Project_projectToMember_updated_at`,
       `Project__Project_projectToMember`.`project_id` AS
       `Project__Project_projectToMember_project_id`,
       `Project__Project_projectToMember`.`member_id`  AS
       `Project__Project_projectToMember_member_id`
FROM   `project` `Project`
       LEFT JOIN `project_to_member` `Project__Project_projectToMember`
              ON `Project__Project_projectToMember`.`project_id` =
                 `project`.`id`
       LEFT JOIN `member` `121c70d2eeb042e9de57100ccc9660eeffb2727d`
              ON
`121c70d2eeb042e9de57100ccc9660eeffb2727d`.`id` = `Project__Project_projectToMember`.`member_id`
WHERE  (((((( `121c70d2eeb042e9de57100ccc9660eeffb2727d`.`id` = ? )))))) -- PARAMETERS: [1484]

Relation X

SELECT `project`.`id`         AS `Project_id`,
       `project`.`title`      AS `Project_title`,
       `project`.`subject`    AS `Project_subject`,
       `project`.`created_at` AS `Project_created_at`,
       `project`.`updated_at` AS `Project_updated_at`
FROM   `project` `Project`
       LEFT JOIN `project_to_member` `Project__Project_projectToMember`
              ON `Project__Project_projectToMember`.`project_id` =
                 `project`.`id`
       LEFT JOIN `member` `121c70d2eeb042e9de57100ccc9660eeffb2727d`
              ON
`121c70d2eeb042e9de57100ccc9660eeffb2727d`.`id` = `Project__Project_projectToMember`.`member_id`
WHERE  (((((( `121c70d2eeb042e9de57100ccc9660eeffb2727d`.`id` = ? )))))) 

결정사항