[TypeORM] Data Mapper ํจํด
Data Mapper ํจํด์ typeORM์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ํจํด ์ค ํ๋๋ค.
Active Record ํจํด์ ๋นํ๋ฉด, ์ข๋ ๊ท๋ชจ๊ฐ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๊ธฐ ์ ํฉํ๋ค๊ณ ํ๋ค.
typeORM์์ ์์ฒด ์ ๊ณตํ๋ Repository๋ผ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค. ์ด Repository์๋ ์ผ๋ฐ์ ์ผ๋ก ํ์ํ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ด ๊ธฐ๋ณธ๊ตฌํ๋์ด ์ ๊ณต๋๋ค.
์ ๊ฐ๋ค ์ฐ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
ํ ์คํธ์ ์ฌ์ฉํ ํ ์ด๋ธ ์ํฐํฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.


๊ทธ๋ฆฌ๊ณ ์ํฐํฐ์ ๋์๋๋ ๋ ํฌ์งํ ๋ฆฌ ํด๋์ค๋ฅผ ์ ์ํ๋ค.
EntityRepository ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ๋ฌ๊ณ , Respository<์ํฐํฐ>๋ฅผ ์์๋ฐ์ผ๋ฉด ๋๋ค.
์ฌ๊ธฐ์๋ ๋ฉ์๋๋ฅผ ๋ฐ๋ก ์ ์ํ์ง ์์์ง๋ง, ํ์ํ๋ค๋ฉด Active Record์ฒ๋ผ ๋ฉ์๋๋ฅผ ์ถ๊ฐ์ ์ํด์ ์ฌ์ฉํด๋ ์ข๋ค.
์ด๋ ๊ฒ๋ง ํด๋ฌ๋ Repository์์ ๊ธฐ๋ณธ์ผ๋ก ๋ง๋ค์ด์ ์ฃผ๋ ์ฟผ๋ฆฌ ๋ฉ์๋๋ค์ ์ฌ์ฉํ ์๊ฐ ์๋ค.
์ด ์ค ๋ํ์ ์ธ ๊ฒ๋ค๋ง ๋ช๊ฐ์ง ๊ณจ๋ผ์ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
์์ธํ ๊ฒ์ ๊ณต์๋ฌธ์๋ฅผ ์ฐธ์กฐํ๊ธธ ๋ฐ๋๋ค. ๊ทธ๋ ๊ฒ ์น์ ํ์ง ์๋ค๋ง.
https://typeorm.delightful.studio/classes/repository_repository.repository.html
save
์ฝ์
์ save ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
์ํฐํฐ ๋ฐ์ดํฐ๋ฅผ ์ธ์๋ก ๋๊ฒจ์ฃผ๋ฉด ๋๋ค.
์ด ํจ์๋ ๊ทธ๋ฅ insert๋ง ํ๋ ๊ฒ ์๋๋ผ, PK๊ฐ ์ถฉ๋ํ๋ค๋ฉด update๋ฅผ ์ํํ๋ค๋๊ฒ ํน์ง์ด๋ค.
์์ฒ๋ผ ๊ทธ๋ฅ ์ ๊ฐ์ผ ๊ฒฝ์ฐ์ ํธ๋์ญ์ ๋ง ๊ฑธ๊ณ insert๋ฅผ ์ํํ๋ค.


PK๊ฐ ๊ฑธ๋ฆฌ๋ฉด select๋ก ์ค๋ณต์ ์ฒดํฌํ ํ update๋ฅผ ์ํํ๋ค.



์ฌ๋ฌ ๊ฐ์ ์ฝ์ ํ๋ค๋ฉด ์ํฐํฐ์ ๋ฐฐ์ด์ ๋ฃ์ผ๋ฉด ๋๋ค.



์ฝ์ ํ ๊ฒ๊ณผ ์์ ํ ๊ฒ์ด ๋ค์์ฌ๋ ์ ์ฒ๋ฆฌํด์ค๋ค.



find ํจ์๋ค
ํ์ ํจ์๋ก๋ find, findOne ๋ฑ์ ํจ์๊ฐ ์ ๊ณต๋๋ค. find๋ ๋ค์ค ํ, findOne์ ๋จ์ผ ํ์ ๊ฐ์ ธ์จ๋ค๋ ๊ฒ์ ๋นผ๋ฉด ๊ฑฐ์ ๋์ผํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ธ์ ํธ๋ก ๋ค์ํ ์ต์
์ ์ค ์๊ฐ ์๋ค.
๊ฐ์ฅ ์์ฃผ ์ธ๋งํ ์ต์
์ ์ญ์ where๋ค.
์์ฒ๋ผ ์กฐ๊ฑด์ผ๋ก ๋น๊ตํ ์ปฌ๋ผ๊ณผ, ๊ฐ์ ์์ผ๋ก ์ฃผ๋ฉด ๋๋ฑ ๋น๊ต๋ฅผ ํด์ค๋ค.

์ฐ์ฐ์๋ ์ฌ์ฉํ ์ ์๋ค. LessThan ๋ฑ์ ๋ค์ํ ์ฐ์ฐ์ ํจ์๊ฐ ์ ๊ณต๋๋ค.


์ง์๋๋ ์ฐ์ฐ์ ๋ชฉ๋ก์ ์๋ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ๊ธธ ๋ฐ๋๋ค.
https://github.com/typeorm/typeorm/blob/master/docs/find-options.md
์ด์ธ์ ์ ๋ ฌ์ order๋ก


offset&limit๋ skip&take๋ก ์ฒ๋ฆฌํ ์ ์๋ค.


ํน์ ์ปฌ๋ผ๋ง ๊ณจ๋ผ์ค๊ณ ์ถ๋ค๋ฉด select ์ต์ ์ ์ฌ์ฉํด์ ์ปฌ๋ผ๋ช ์ ๋ฌธ์์ด๋ก ๋ฃ์ด์ค๋ค.


update
update๋ ๋ง ๊ทธ๋๋ก ์์ ๋ง ํด์ฃผ๋ ํจ์๋ค.
์ฒซ๋ฒ์งธ ์ธ์๋ก๋ ์กฐ๊ฑด์ ์ ๋ํ ์ค๋ธ์ ํธ, ๋๋ฒ์งธ ์ธ์๋ก๋ ์์ ํ ๊ฐ์ ์ค๋ธ์ ํธ๋ฅผ ๋๊ฒจ์ค๋ค.
์ฒซ๋ฒ์งธ ์ธ์์ ์กฐ๊ฑด์ ์ select์์ where์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฑฐ์ ๋์ผํ๊ฒ ์ฃผ๋ฉด ๋๋ค.



insert
insert๋ ๋จ์ํ ์ฝ์
๋ง์ ์ํํ๋ ํจ์๋ค.
๊ทธ๋ฅ ์ฝ์
ํ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.



์ฐธ์กฐ
https://orkhan.gitbook.io/typeorm/docs/active-record-data-mapper
https://velog.io/@josworks27/typeORM-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0
https://typeorm.delightful.studio/classes/repository_repository.repository.html
https://github.com/typeorm/typeorm/blob/master/docs/find-options.md