TypeORM

aidenΒ·2022λ…„ 5μ›” 23일

ORM μ΄λž€?
Object Relational Mapping, 객체-관계 λ§€ν•‘
객체와 ν…Œμ΄λΈ” μ‹œμŠ€ν…œ(RDBMSs)을 λ³€ν˜• 및 μ—°κ²°ν•΄μ£ΌλŠ” μž‘μ—…μ΄λΌ 말 ν•  수 μžˆλ‹€. ORM을 μ΄μš©ν•œ κ°œλ°œμ€ 객체와 λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ³€ν˜•μ— μœ μ—°ν•˜κ²Œ λŒ€μ²˜ν•  수 μžˆλ„λ‘ ν•΄μ€€λ‹€. ORM을 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° κ΄€μ μ—μ„œ 생각해보면, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ— μ œμ•½μ„ μ΅œλŒ€ν•œ λ°›μ§€ μ•ŠμœΌλ©΄μ„œ, 객체λ₯Ό 클래슀둜 ν‘œν˜„ν•˜λŠ” 것과 같이 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 객체처럼 μ‰½κ²Œ ν‘œν˜„ λ˜λŠ” μ‚¬μš©ν•˜μžλŠ” 것이닀.

TypeOrm (object Relational Mapping)
TypeORM μ—μ„œ ORM κΈ°λ³Έ, NativeScript, λ°•λžŒνšŒ 및 μ „μž ν”Œλž«νΌ λ°˜μ‘, NodeJS, λΈŒλΌμš°μ €, μ½”λ₯΄λ„λ°”, 폰갭, 이온 μ„±μ—μ„œ μ‹€ν–‰ν•  수 있으며, 타이프 라이터와 μžλ°” 슀크립트 (ES5, ES6, ES7, ES8)와 ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 μ†”λ£¨μ…˜μ˜ λͺ©ν‘œλŠ” 항상 μ΅œμ‹  JavaScript κΈ°λŠ₯을 μ§€μ›ν•˜κ³  λͺ‡ κ°€μ§€ ν…Œμ΄λΈ”μ΄μžˆλŠ” μ†Œκ·œλͺ¨ μ‘μš© ν”„λ‘œκ·Έλž¨λΆ€ν„° μ—¬λŸ¬ λ°μ΄ν„°λ² μ΄μŠ€κ°€μžˆλŠ” λŒ€κ·œλͺ¨ μ—”ν„°ν”„λΌμ΄μ¦ˆ μ‘μš© ν”„λ‘œκ·Έλž¨μ— 이λ₯΄κΈ°κΉŒμ§€ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” λͺ¨λ“  μ’…λ₯˜μ˜ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λŠ” 데 λ„μ›€μ΄λ˜λŠ” μΆ”κ°€ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

ORM 의 μž₯단점
μž₯점

μ„ μ–Έ , ν• λ‹Ή , μ’…λ£Œ 같은 λΆ€μˆ˜μ μΈ μ½”λ“œκ°€ μ—†κ±°λ‚˜ κΈ‰κ²©νžˆ 쀄어든닀.
각쒅 객체에 λŒ€ν•œ μ½”λ“œλ₯Ό λ³„λ„λ‘œ μž‘μ„±ν•˜κΈ° 떄문에 μ½”λ“œμ˜ 가독성을 μ˜¬λ €μ€€λ‹€.
SQL 의 절차 , 순차적인 μ ‘κ·Ό 방식이 μ•„λ‹Œ 객체 μ ‘κ·Ό 방식이닀.
단점

μ™„λ²½ν•˜κ²Œ ORM μ„œλΉ„μŠ€κ΅¬ν˜„μ΄ μ–΄λ €μšΈμˆ˜μžˆλ‹€.
μ‚¬μš©ν•˜κΈ°μ— νŽΈλ¦¬ν•¨μ€ μžˆμ§€λ§Œ 섀계가 λ³΅μž‘ν•˜λ‹€.
ν”„λ‘œμ νŠΈ λ³΅μž‘μ„±κ³Όλ‚œμ΄λ„λ ˆλ”°λΌ 퍼포먼슀의 큰차이가 μžˆλ‹€.

즉
TypeORM은 μœ μš©ν•œ 도ꡬ이며 여기에 ν‘œμ‹œλœ 것보닀 훨씬 더 λ§Žμ€ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” TypeORM이 μ œκ³΅ν•˜λŠ” κ²ƒμ˜ ν‘œλ©΄λ§Œμ„ ν›‘μ–΄λ³΄μ•˜μ„ 뿐이며 훨씬 더 λ§Žμ€ 것이 μžˆμŠ΅λ‹ˆλ‹€. μ§€μ—° 관계, λ§ˆμ΄κ·Έλ ˆμ΄μ…˜, νŽ˜μ΄μ§€ λ§€κΉ€ λ“±κ³Ό 같은 더 λ§Žμ€ κ³ κΈ‰ κΈ°λŠ₯에 λŒ€ν•œ 지원이 μžˆμŠ΅λ‹ˆλ‹€. μ›Ή μ‚¬μ΄νŠΈμ˜ 전체 λ¬Έμ„œ μ—λŠ” μœ μš©ν•œ 정보가 많이 μžˆμŠ΅λ‹ˆλ‹€.

profile
μ›Ή/μ•± λ°±μ—”λ“œ 개발자

0개의 λŒ“κΈ€