๋ฌธ์ ์ํฉ


- TypeORM ์ฌ์ฉ ์ค Entity ํด๋์ค์ ํ๋กํผํฐ๋ฅผ private์ผ๋ก ๋ณ๊ฒฝํ๋๋ ์ด๋ฐ ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค.
"Property "id" was not found in "Expense". Make sure your query is correct."
- ์ฒ์์๋ ํ๋กํผํฐ ์ด๋ฆ ์์ ์ธ๋์ค์ฝ์ด๋ฅผ ๋ถ์ฌ์ ๋งคํ์ด ์ ๋๋ ๊ฑด๊ฐ ํ๋๋ฐ, ํ๋กํผํฐ๋ฅผ public์ผ๋ก ํด์ผ๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ฒด๊ฐ ์๋์ผ๋ก ๋งคํ๋๋ ๊ฒ์ด์์ต๋๋ค.
- JPA๋ฅผ ์ฌ์ฉํ ๋๋ ์ํฐํฐ์ ๋ชจ๋ ๋ฉค๋ฒ ๋ณ์๋ฅผ private์ผ๋ก ์ ์ธํ๊ณ getter & setter๋ฅผ ๋์ด ์บก์ํ๋ฅผ ํ์ฌ, ์ํฐํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด์ public ๋ฉ์๋๋ฅผ ๋์ด ์๋น์ค์์ ํธ์ถํ๋ ๊ฒ์ด ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์ ์ ์(?)์ด๋ผ๊ณ ์๊ณ ์์ต๋๋ค... TypeORM์์๋ ์ด์ ๋น์ทํ๊ฒ ํด๋ณด๊ณ ์ถ์์ผ๋ ์ํฐํฐ ํด๋์ค์ private ํ๋กํผํฐ๋ฅผ ์ง์ํ์ง ์๋ ๊ฒ์ผ๋ก ๋ณด์์ต๋๋ค.
์ TypeORM์์๋ ์ํฐํฐ์ private ํ๋กํผํฐ๋ฅผ ํ์ฉํ์ง ์์๊น?
์์ธ์ง ๊ถ๊ธํด์ ธ์ ๊ตฌ๊ธ๋ง ํด๋ณด์๋๋ฐ, TypeORM GitHub issue์์ ์ด์ ๊ด๋ จํ TypeORM ๊ฐ๋ฐ์์ ์๊ฐ์ ์ฟ๋ณผ ์ ์์์ต๋๋ค.
ํด๋น ์ด์๋ "Support for private entity attributes"๋ผ๋ ์ ๋ชฉ์ผ๋ก ์ํฐํฐ์ private ํ๋กํผํฐ๋ฅผ ์ง์ํ๋ ๊ฒ์ ๋ํ ์ ์์ด์์ต๋๋ค.
์ด์๋ฅผ ์์ฑํ ๋ถ์ ์๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.


- ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์์๋ Getter/Setter๋ฅผ ์ฌ์ฉํ๋ ๋์ , ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
- ์ง๊ธ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค ์ ์์ง๋ง, ํ๋กํผํฐ๊ฐ public์ด๋ฉด ์ค์๋ก ์ํฐํฐ์ ์ํ๋ฅผ ์ง์ ์์ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์ํฐํฐ ํ๋กํผํฐ๋ฅผ private์ผ๋ก ์ ์ธํ๋ฉด repository์์ ํด๋น ํ๋กํผํฐ๋ฅผ ์ ํํ ์๊ฐ ์๋ค.
- ๋ฐ๋ผ์ ์ํฐํฐ ํ๋กํผํฐ๋ฅผ private์ผ๋ก ์ ์งํ๋ฉด์๋ repository์์ ์ ๊ทผํด ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆด ์ ์๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ค.
์ด์ ๋ํ ๋ต๋ณ์ ์๋์ ๊ฐ์ต๋๋ค.


- ์ํฐํฐ์ ์์ฑ์ private์ผ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ด ์ ์ผํ ์บก์ํ ๋ฐฉ์์ ์๋๋ค.
- ๋น์ฆ๋์ค ๋ก์ง์ด๋ ์์ฑ ์ ๊ทผ ์ ์ด๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ ๊ทธ ๋ชฉ์ ์ ๋ง๋ ๋ณ๋์ ๋ชจ๋ธ์ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข์ ๋ฐฉ๋ฒ์ผ ์ ์๋ค.
- ์ํฐํฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์ ์์ฉ์ผ๋ก๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
- ์บก์ํ๊ฐ ๋ถ์กฑํ๋ค๋ ์ฃผ์ฅ์๋ ๋์ํ์ง ์์ผ๋ฉฐ, ๋๋ฉ์ธ ์ฃผ๋ ๊ฐ๋ฐ์ ๋ฐ๋ฅด๋ ๋๊ท๋ชจ ์์คํ ์์ TypeORM์ ์ฌ์ฉํ๊ณ ์๋๋ฐ ์บก์ํ์ ๋ฌธ์ ๊ฐ ์์๋ค.
- ์บก์ํ๋ฅผ ์ถ๊ตฌํ ์๋ก ์ค๋ฒ์์ง๋์ด๋ง์ด ๋ ์ ์๋ค. ์์คํ ์ ์ ๋ง ๊ทธ ์ ๋์ ์บก์ํ๊ฐ ํ์ํ์ง ๋ค์ ํ ๋ฒ ์๊ฐํด๋ณด๋ผ.
๋์ ์๊ฐ
TypeORM ๊ฐ๋ฐ์์ ์ฝ๋ฉํธ๋ฅผ ๋ณด์์ ๋ ํต์ฌ ๋ด์ฉ์ ์๋์ ๊ฐ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
- ์บก์ํ ์์ค์ ์ฌ์ฉ์์๊ฒ ๋งก๊ธด๋ค.
- ์ํฐํฐ๋ ์คํค๋ง ์ ์์ฉ์ผ๋ก๋ง ์ฌ์ฉํ๋ค.
ํด๋ฆฐ ์ฝ๋ 6์ฅ์ ๋ด์ฉ์ ์กฐ๊ธ ์ฐธ๊ณ ํด๋ณด์๋ฉด '์๋ฃ ๊ตฌ์กฐ'์ '๊ฐ์ฒด'๋ ๋ค๋ฅด๋ค๊ณ ์ด์ผ๊ธฐ ํฉ๋๋ค.
ํด๋ฆฐ ์ฝ๋์์ ์ด์ผ๊ธฐํ๋ ์๋ฃ ๊ตฌ์กฐ๋ ๊ณต๊ฐ ๋ณ์๋ง ์๊ณ ํจ์๊ฐ ์๋ ํด๋์ค, ๊ฐ์ฒด๋ ๋น๊ณต๊ฐ ๋ณ์๋ฅผ ์กฐ์ํ ์ ์๋ ํจ์๋ง ๊ณต๊ฐํฉ๋๋ค.
์ด ๋์ด ํผํฉ๋ ๊ตฌ์กฐ์ ํ ๊ฐ์ง ์ฌ๋ก๋ก ORM์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ Active Record ํจํด์ด ์๋๋ฐ, ์ํฐํฐ๊ฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ์ ๋ ๊ฐ์ง ์ญํ ์ ๋์์ ์ํํ์ฌ ๋จ์ผ ์ฑ ์ ์์น์ ๋ฐ๋ฅด์ง ์๊ฒ ๋๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
TypeORM ๊ฐ๋ฐ์๊ฐ ๋๋ฉ์ธ ๋ชจ๋ธ์ ๋ฐ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ถ์ฒํ ์ ๊ณผ ์ํฐํฐ๋ ์คํค๋ง ์ ์์ฉ์ผ๋ก๋ง ์ฌ์ฉํ๋ผ๋ ์ด์ผ๊ธฐ๋ฅผ ํ ๊ฒ์ผ๋ก ๋ณด์, ๋ ๊ฐ์ง ์ฉ๋๋ฅผ ํ๋์ ๊ฐ์ฒด์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋ํด ๋์ํ์ง ์๋ ๊ฒ์ผ๋ก ๋ณด์์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก๋... ์บก์ํ๋ฅผ ํ ์๋ก ์ค๋ฒ ์์ง๋์ด๋ง์ด ๋ ์ ์๋ค๋ ๋ง์๋ ๋์ํฉ๋๋ค. TypeORM์ ์ฌ์ฉํ ๋๋ ์ํฐํฐ ํด๋์ค์ ํ๋กํผํฐ๊ฐ public์ธ ๋งํผ ์ด๋๊น์ง, ์ด๋ป๊ฒ ์ํฐํฐ๋ฅผ ์บก์ํํ ๊ฒ์ธ์ง ๋ง์ ๊ณ ๋ฏผ์ด ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค.
์ฐธ๊ณ
https://cupeanimus.tistory.com/87
https://github.com/typeorm/typeorm/issues/3548
https://jojoldu.tistory.com/251
'๋ฐฑ์๋ > ORM' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TypeORM] bigint๊ฐ string์ผ๋ก ๋ณํ๋ ๋ (0) | 2024.10.25 |
---|---|
[TypeORM] TypeORM์์ ํธ๋์ญ์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ (0) | 2024.08.05 |