πΎ [CS] ORMμ΄λ 무μμΌκΉμ?
- ORM(Object-Relational Mapping)μ κ°μ²΄-κ΄κ³ 맀νμ μλ―Ένλ©°, κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μΈμ΄(μ: Java, Python λ±)μμ μ¬μ©νλ κ°μ²΄μ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈ κ°μ λ°μ΄ν°λ₯Ό 맀ννλ κΈ°μ μ λ§ν©λλ€.
- ORM(Object-Relational Mapping)μ κ°μ²΄ μ§ν₯ λ°©μκ³Ό κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ λ°μ΄ν° κ΅¬μ‘°κ° μλ‘ λ€λ₯΄λ€λ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν μ루μ μΌλ‘, νλ‘κ·Έλλ¨Έκ° λ°μ΄ν°λ² μ΄μ€μ μΈλΆμ μΈ SQL 쿼리 μμ΄ κ°μ²΄ λͺ¨λΈμ ν΅ν΄ λ°μ΄ν°λ² μ΄μ€μ μνΈμμ©ν μ μλλ‘ λμμ€λλ€.
1οΈβ£ ORM(Object-Relational Mapping)μ μ£Όμ κΈ°λ₯.
1οΈβ£ κ°μ²΄μ ν μ΄λΈ κ°μ 맀ν.
-
κ°μ²΄ μ§ν₯ μΈμ΄μμλ λ°μ΄ν°κ° κ°μ²΄λ‘ ννλκ³ , κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμλ λ°μ΄ν°κ° ν
μ΄λΈ ννλ‘ μ μ₯λ©λλ€.
- ORM(Object-Relational Mapping)μ νλ‘κ·Έλλ° μΈμ΄μ κ°μ²΄μ λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈμ μλμΌλ‘ 맀ννμ¬, κ°μ²΄λ₯Ό μ΄μ©ν΄ λ°μ΄ν°λ² μ΄μ€μ μνΈμμ©ν μ μλλ‘ ν©λλ€.
2οΈβ£ SQL μΆμν.
- ORM(Object-Relational Mapping)μ SQL 쿼리λ₯Ό μλμΌλ‘ μμ±νκ³ , νλ‘κ·Έλλ¨Έκ° κ°μ²΄λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μ‘°ν, μ½μ
, μμ , μμ νλ μ½λλ₯Ό μμ±ν μ μκ²ν©λλ€.
- μ΄λ₯Ό ν΅ν΄ SQL μμ΄λ λ°μ΄ν°λ² μ΄μ€ μμ μ μ½κ² μνν μ μμ΅λλ€.
πββοΈ SQLμ΄λ?
πββοΈ λ°μ΄ν°λ² μ΄μ€λ?
3οΈβ£ λ°μ΄ν°λ² μ΄μ€ λ 립μ±.
- ORM(Object-Relational Mapping)μ νΉμ λ°μ΄ν°λ² μ΄μ€μ μ’
μλμ§ μκ³ , λ€μν λ°μ΄ν°λ² μ΄μ€μμ λμΌν μ½λλ‘ λμν μ μμ΅λλ€.
- λ°μ΄ν°λ² μ΄μ€λ₯Ό λ³κ²½νλλΌλ ORMμ μ¬μ©νλ©΄ μ½λλ₯Ό κ±°μ μμ νμ§ μμλ λ©λλ€.
4οΈβ£ κ°μ²΄ λͺ¨λΈ μ€μ¬μ κ°λ°.
- ORMμ μ¬μ©νλ©΄ κ°μ²΄ λͺ¨λΈμ ν΅ν΄ λ°μ΄ν°λ² μ΄μ€μ μνΈμμ©νκΈ° λλ¬Έμ, λ°μ΄ν°λ² μ΄μ€μμ μνΈμμ©μ΄ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ λ°©μκ³Ό μΌκ΄μ±μ μ μ§ν©λλ€.
- μ΄λ λΉμ¦λμ€ λ‘μ§κ³Ό λ°μ΄ν°λ² μ΄μ€ μνΈμμ©μ μμ°μ€λ½κ² ν΅ν©νλ λ° λμμ μ€λλ€.
πββοΈ λΉμ¦λμ€ λ‘μ§(Business Logic)μ΄λ?
πββοΈ API μ€κ³, κ³μΈ΅ν μν€ν μ², νΈλμμ , μν°ν°(Entity), λΉμ¦λμ€ λ‘μ§κ³Ό λΉμ¦λμ€ κ·μΉμ μ°¨μ΄μ .
2οΈβ£ ORMμ λμ μ리.
1οΈβ£ κ°μ²΄μ λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈ 맀ν.
- κ°μ²΄μ μμ±μ λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈμ 컬λΌ(Column, μ΄)μ λμνκ³ , κ°μ²΄μ μΈμ€ν΄μ€λ ν μ΄λΈμ λ‘μ°(Row, ν)μ λμλ©λλ€.
- μλ₯Ό λ€μ΄, κ°μ²΄ λͺ¨λΈμ
User
ν΄λμ€κ° μλ€λ©΄, λ°μ΄ν°λ² μ΄μ€μλUser
ν μ΄λΈμ΄ μκ³ , κ·Έ μμ±id
,name
,email
λ±μ ν μ΄λΈμ 컬λΌ(Column, μ΄)κ³Ό 맀νλ©λλ€.
2οΈβ£ SQL μλ μμ±.
- ORM(Object-Relational Mapping) λΌμ΄λΈλ¬λ¦¬λ κ°μ²΄λ₯Ό κΈ°λ°μΌλ‘ SELECT, INSERT, UPDATE, DELETEμ κ°μ SQL 쿼리λ₯Ό μλμΌλ‘ μμ±ν©λλ€.
- μλ₯Ό λ€μ΄,
User
κ°μ²΄λ₯Ό λ°μ΄ν°λ² μ΄μ€μ μ μ₯νλ μ½λλ₯Ό μμ±νλ©΄, ORM(Object-Relational Mapping)μ΄ μλμΌλ‘ INSERT SQL 쿼리λ₯Ό μμ±νμ¬ ν μ΄λΈμ ν΄λΉ λ°μ΄ν°λ₯Ό μ½μ ν©λλ€.
3οΈβ£ λ°μ΄ν°λ² μ΄μ€ μ°λ.
- ORM(Object-Relational Mapping)μ κ°μ²΄ μνλ₯Ό μΆμ νκ³ , λ³κ²½ μ¬νμ΄ μμ κ²½μ° μ΄λ₯Ό λ°μ΄ν°λ² μ΄μ€μ λκΈ°νν©λλ€.
- κ°μ²΄μ μμ±κ°μ΄ λ³κ²½λλ©΄, ORM(Object-Relationl Mapping)μ μλμΌλ‘ UPDATE 쿼리λ₯Ό μμ±νκ³ μ€ννμ¬ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ λ°μ΄νΈν©λλ€.
3οΈβ£ ORMμ μ₯μ .
1οΈβ£ μμ°μ± ν₯μ.
- ORM(Object-Relational Mapping)μ μ¬μ©νλ©΄ SQL μμ±μ μ€μ΄κ³ , κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° λ°©μμΌλ‘ λ°μ΄ν°λ₯Ό μ²λ¦¬ν μ μκΈ° λλ¬Έμ, κ°λ°μλ λ μ μ μ½λλ‘ λ°μ΄ν°λ² μ΄μ€μ μνΈμμ©ν μ μμ΅λλ€.
- μ΄λ κ°λ° μλλ₯Ό λμ΄κ³ μ μ§λ³΄μλ₯Ό μ½κ²ν©λλ€.
2οΈβ£ λ°μ΄ν°λ² μ΄μ€ λ 립μ±.
- ORM(Object-Relational Mapping)μ νΉμ λ°μ΄ν°λ² μ΄μ€μ μμ‘΄νμ§ μμΌλ©°, λ°μ΄ν°λ² μ΄μ€λ₯Ό λ³κ²½νλλΌλ ORM(Object-Relational Mapping) λΌμ΄λΈλ¬λ¦¬λ§ λ§μΆλ©΄ νλ‘κ·Έλ¨ μ½λλ₯Ό κ±°μ μμ νμ§ μκ³ λ λ€μν λ°μ΄ν°λ² μ΄μ€μμ λμν μ μμ΅λλ€.
3οΈβ£ 보μμ±
- ORM(Object-Relational Mapping)μ μλμΌλ‘ SQL 쿼리λ₯Ό μμ±νκΈ° λλ¬Έμ SQL μΈμ μ
곡격과 κ°μ 보μ μ·¨μ½μ μ λ°©μ§νλ λ° λμμ΄ λ©λλ€.
- μ§μ SQLμ μμ±ν νμκ° μ€μ΄λ€κΈ° λλ¬Έμ, 보μμ±μ΄ ν₯μλ©λλ€.
4οΈβ£ μ μ§λ³΄μμ±.
- κ°μ²΄ μ§ν₯ μ€κ³λ₯Ό μ μ§νλ©΄μ λ°μ΄ν°λ² μ΄μ€μ μνΈμμ©ν μ μμ΄, μ½λμ κ°λ
μ±κ³Ό μ μ§λ³΄μκ° μ¬μμ§λλ€.
- λ°μ΄ν°λ² μ΄μ€ κ΄λ ¨ λ³κ²½μ΄ νμν λλ κ°μ²΄ λͺ¨λΈμ ν΅ν΄ μ½κ² λ³κ²½ν μ μμ΅λλ€.
4οΈβ£ ORMμ λ¨μ .
1οΈβ£ 볡μ‘ν 쿼리 μμ±μ νκ³.
- ORMμ 볡μ‘ν 쿼리 μ΅μ νλ νΉμ ν SQL κΈ°λ₯μ μΆ©λΆν μ§μνμ§ μμ μ μμ΅λλ€.
- λ§€μ° λ³΅μ‘ν μΏΌλ¦¬κ° νμν κ²½μ° ORM λμ μ§μ SQLμ μμ±ν΄μΌ ν λλ μμ΅λλ€.
2οΈβ£ μ±λ₯ μ΄μ.
- μλμΌλ‘ SQL 쿼리λ₯Ό μμ±νλ ORMμ μ§μ μμ±ν SQLμ λΉν΄ μ±λ₯μ΄ λ€μ λ¨μ΄μ§ μ μμ΅λλ€.
- λκ·λͺ¨ νΈλν½μ΄λ λ°μ΄ν° μ²λ¦¬κ° λ§μ νκ²½μμλ ORM(Object-Relational Mapping) μ¬μ©μ΄ λΉν¨μ¨μ μΌ μ μμ΅λλ€.
3οΈβ£ μΆμνλ‘ μΈν μ μ΄λ ₯ κ°μ.
- ORM(Object-Relational Mapping)μ SQLμ μΆμννκΈ° λλ¬Έμ, λ°μ΄ν°λ² μ΄μ€μ μΈλΆμ μΈ μ μ΄κ° μ΄λ ΅μ΅λλ€.
- SQLμ μΈλΆ λμμ μ§μ κ΄λ¦¬νκ³ μΆμ λλ ORM(Object-Relational Mapping)λ³΄λ€ μ§μ SQL μμ±μ΄ λ λμ μ μμ΅λλ€.
πββοΈ μΆμν(abstraction)
πββοΈ DIPμ μ μμμ λ§νλ βμΆμνλ κ²βμ΄λ 무μμΌκΉ?
πββοΈ DIPμ μ μμμ λ§νλ βμΆμνλ κ²βκ³Ό βμΆμνβμ κ°λ μ μ°¨μ΄μ .
5οΈβ£ λνμ μΈ ORM λΌμ΄λΈλ¬λ¦¬.
Hibernate
-
Javaμ JPA(Java Persistence API)λ₯Ό μ§μνλ κ°μ₯ λ리 μ¬μ©λλ ORM νλ μμν¬μ
λλ€.
- Hibernateλ κ°μ²΄μ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ κ°μ 맀νμ μλμΌλ‘ μ²λ¦¬νλ©°, λ€μν λ°μ΄ν°λ² μ΄μ€λ₯Ό μ§μν©λλ€.
πββοΈ JPAλ 무μμΈκ°μ?
πββοΈ JPAλ₯Ό μ¬μ©νλ μ΄μ .
6οΈβ£ κ²°λ‘ .
-
ORM(Object-Relational Mapping)μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ κ°μ²΄μ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ κ°μ 맀νμ κ΄λ¦¬νλ κΈ°μ λ‘, κ°λ°μκ° κ°μ²΄λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ² μ΄μ€ μμ
μ μνν μ μκ² ν΄μ€λλ€.
- μ΄λ₯Ό ν΅ν΄ κ°λ°μλ SQL μμ±μ λ²κ±°λ‘μμ μ€μ΄κ³ , μμ±μ±, μ μ§λ³΄μμ±, 보μμ±μ λμΌ μ μμ΅λλ€.
- κ·Έλ¬λ 볡μ‘ν 쿼리 μ²λ¦¬λ μ±λ₯ λ¬Έμ μ μμ΄μλ SQLμ μ₯μ±νλ κ²μ΄ λ λμ μ μμ΅λλ€.
- μ΄λ₯Ό ν΅ν΄ κ°λ°μλ SQL μμ±μ λ²κ±°λ‘μμ μ€μ΄κ³ , μμ±μ±, μ μ§λ³΄μμ±, 보μμ±μ λμΌ μ μμ΅λλ€.
- ORM(Object-Relation Mapping)μ μ μ ν νμ©νλ©΄ μ½λμ κ°λ μ±κ³Ό ν¨μ¨μ±μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.