π[Spring] κ³μΈ΅ν μν€ν μ²(Layered Architecture), 3κ³μΈ΅ μν€ν μ²(Three-Tier Architecture)
- Controllerλ₯Ό ν΅ν΄ μΈλΆμ μμ²μ λ°κ³ , Serviceμμ λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬νλ©°, Repositoryμμ λ°μ΄ν°λ₯Ό μ μ₯νκ³ κ΄λ¦¬νλ ν¨ν΄μ βκ³μΈ΅ν μν€ν μ²(Layered Architecture)β λλ β3κ³μΈ΅ μν€ν μ²(Three-Tier Architecture)β λΌκ³ λΆλ¦ λλ€.
1οΈβ£ κ³μΈ΅ν μν€ν μ²(Layered Architecture)
- μ΄ μν€ν μ² ν¨ν΄μ μ ν리μΌμ΄μ μ μ¬λ¬ κ³μΈ΅μΌλ‘ λλμ΄ κ° κ³μΈ΅μ΄ νΉμ ν μν μ λ΄λΉνλλ‘ κ΅¬μ‘°μν©λλ€.
- μ΄ λ°©μμ μννΈμ¨μ΄μ 볡μ‘μ±μ μ€μ΄κ³ , μ½λμ μ μ§λ³΄μμ±μ λμ΄λ©°, ν μ€νΈνκΈ° μ½κ² λ§λ€μ΄μ€λλ€.
- μ€νλ§ νλ μμν¬μμ μ΄ ν¨ν΄μ μμ£Ό μ¬μ©λ©λλ€.
2οΈβ£ κ° κ³μΈ΅λ³ μν .
-
1. Presentation Layer(νλ μ ν
μ΄μ
κ³μΈ΅) - Controller
- μ¬μ©μ μΈν°νμ΄μ€μ μνΈμμ©νλ κ³μΈ΅μ λλ€.
- μΈλΆμ μμ²μ λ°μμ μ²λ¦¬νκ³ , μλ΅μ λ°νν©λλ€.
- μ€νλ§μμλ μ£Όλ‘
@Controller
λλ@RestController
λ₯Ό μ¬μ©νμ¬ μ΄ κ³μΈ΅μ ꡬνν©λλ€.
-
2. Business Logic Layer(λΉμ¦λμ€ λ‘μ§ κ³μΈ΅) - Service
- λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬νλ κ³μΈ΅μ λλ€.
- λ°μ΄ν°μ μ²λ¦¬, κ³μ°, κ²μ¦ λ± ν΅μ¬μ μΈ μ ν리μΌμ΄μ λ‘μ§μ΄ ꡬνλ©λλ€.
- μ€νλ§μμλ μ£Όλ‘
@Service
μ λ Έν μ΄μ μ μ¬μ©νμ¬ μ΄ κ³μΈ΅μ ꡬνν©λλ€.
-
3. Data Access Layer(λ°μ΄ν° μ κ·Ό κ³μΈ΅) - Repository
- λ°μ΄ν°λ² μ΄μ€λ μΈλΆ λ°μ΄ν° μμ€μ μνΈμμ©νλ κ³μΈ΅μ λλ€.
- λ°μ΄ν°μ CRUD(Create, Read, Update, Delete) μμ μ μ²λ¦¬ν©λλ€.
- μ€νλ§μμλ μ£Όλ‘
@Repository
μ λ Έν μ΄μ μ μ¬μ©νμ¬ μ΄ κ³μΈ΅μ ꡬννλ©° JPA, MyBatis, Hibernate λ±μ ORM(Object-Relational Mapping) λꡬμ ν¨κ» μ¬μ©λ©λλ€.
3οΈβ£ μ΄ ν¨ν΄μ μ£Όμ μ₯μ .
-
λͺ¨λν
- κ° κ³μΈ΅μ΄ λ 립μ μΌλ‘ κ΄λ¦¬λλ―λ‘, κ° κ³μΈ΅μ μ½λκ° λͺ νν λΆλ¦¬λ©λλ€.
-
μ μ§λ³΄μμ±
- λΉμ¦λμ€ λ‘μ§, λ°μ΄ν° μ κ·Ό, κ·Έλ¦¬κ³ νλ μ ν μ΄μ λ‘μ§μ΄ λΆλ¦¬λμ΄ μμ΄, κ° λΆλΆμ λ 립μ μΌλ‘ μμ νκ±°λ νμ₯νκΈ° μ½μ΅λλ€.
-
ν
μ€νΈ μ©μ΄μ±
- κ° κ³μΈ΅μ λ 립μ μΌλ‘ ν μ€νΈν μ μμ΄, λ¨μ ν μ€νΈμ ν΅ν© ν μ€νΈκ° μ©μ΄ν©λλ€.
-
μ μ°μ±
- νΉμ κ³μΈ΅μ λ³κ²½νκ±°λ λ체ν λ, λ€λ₯Έ κ³μΈ΅μ λ―ΈμΉλ μν₯μ μ΅μνν μ μμ΅λλ€.
μ΄ κ³μΈ΅ν μν€ν μ²λ μ€νλ§ νλ μμν¬λ₯Ό μ¬μ©νλ λλΆλΆμ μ ν리μΌμ΄μ μμ μ±ννλ μΌλ°μ μΈ κ΅¬μ‘°μ΄λ©°, μννΈμ¨μ΄ μ€κ³μ λ² μ€νΈ νλν°μ€ μ€ νλλ‘ λ리 μΈμ λ°κ³ μμ΅λλ€.