π[Backend Development] Java Spring νλ μμν¬ νλ‘μ νΈ κ΅¬ν μ κ³μΈ΅ ꡬν μμμ μ΄μ .
κ° κ³μΈ΅μ μν κ³Ό μμ‘΄μ±μ κ³ λ €νμ λ, νλ‘μ νΈλ₯Ό ꡬννλ λ° κΆμ₯λλ μμ μ μΈ μμκ° μμ΅λλ€.
β 1. Java Spring νλ μμν¬ νλ‘μ νΈλ₯Ό ꡬν μ μ΄λ€ κ³μΈ΅ μμλ‘ κ΅¬νν΄μΌ νλκ°?
κ°μ₯ μμ μ μ΄κ³ μΆμ²λλ μμλ βμμμ λ°μΌλ‘(Inside-Out)β ꡬννλ λ°©μμ
λλ€.
μ¦, λ°μ΄ν°μ κ°μ₯ ν΅μ¬μ μΈ λΆλΆλΆν° λ§λ€μ΄μ λ°κΉ₯μΌλ‘ νμ₯ν΄ λκ°λ μμμ
λλ€.
βοΈ μΆμ² μμ: Domain Layer(λλ©μΈ κ³μΈ΅) β Data Access Layer(λ°μ΄ν° μ κ·Ό κ³μΈ΅) β Business Layer(λΉμ¦λμ€ κ³μΈ΅) β Presentation Layer(νν κ³μΈ΅)
-
Domain Layer(λλ©μΈ κ³μΈ΅)
-
Product
,Stock
λ±@Entity
ν΄λμ€μ ERD μ€κ³λ₯Ό λ¨Όμ μμ±ν©λλ€. μ΄κ²μ΄ λͺ¨λ λ°μ΄ν°μ λΌλκ° λ©λλ€.
-
-
Data Access Layer(λ°μ΄ν° μ κ·Ό κ³μΈ΅)
-
ProductRepository
λ±@Repository
μΈν°νμ΄μ€λ₯Ό λ§λ€μ΄, λ°μ΄ν°λ² μ΄μ€μ μ€μ λ‘ λ°μ΄ν°λ₯Ό CRUDνλ λ°©λ²μ μ μν©λλ€.
-
-
Business Layer(λΉμ¦λμ€ κ³μΈ΅)
-
ProductService
λ±@Service
ν΄λμ€λ₯Ό λ§λ€μ΄,Repository
λ₯Ό νμ©ν λΉμ¦λμ€ λ‘μ§, νΈλμμ μ²λ¦¬, κ³μ° λ‘μ§ λ±μ ꡬνν©λλ€.
-
-
Presentation Layer(νν κ³μΈ΅)
-
@RestController
λ₯Ό λ§λ€μ΄, μΈλΆμ μμ²μ λ°κ³Service
λ₯Ό νΈμΆνμ¬ κ·Έ κ²°κ³Όλ₯Ό λ°ννλ API μλν¬μΈνΈλ₯Ό μμ±ν©λλ€.
-
β 2. μ βμμμ λ°μΌλ‘(Inside-Out)β λ°©μμΌλ‘ κ³μΈ΅μ ꡬνν΄μΌ ν κΉ?
μ΄ μμλ β건물μ μ§λ μμβ μ λΉμ ν μ μμ΅λλ€.
μΈλ²½κ³Ό μΈν
리μ΄λΆν° ν μ μλ―μ΄, μννΈμ¨μ΄λ λΌλμ κΈ°λ°λΆν° μμ μ¬λ¦¬λ κ²μ΄ κ°μ₯ μμ μ μ
λλ€.
-
1λ¨κ³: μ€κ³λμ λΌλ(
Domain Layer
+Data Access Layer
)- μ§μ μ§κΈ° μ μ€κ³λ(ERD)λ₯Ό κ·Έλ¦¬κ³ , λ μ νκ³ μ² κ³¨(Entity, Repository)μ μΈμ°λ κ²κ³Ό κ°μ΅λλ€. μ΄ κΈ°λ°μ΄ νΌνΌν΄μΌλ§ κ·Έ μμ 무μμ΄λ μμ νκ² μ¬λ¦΄ μ μμ΅λλ€.
-
2λ¨κ³: λ΄λΆ μ€λΉ(
Business Layer
)- λΌλκ° μμ±λ ν, μ κΈ°/λ°°μ/κ°μ€ μ€λΉ(λΉμ¦λμ€ λ‘μ§, νΈλμμ )λ₯Ό μ€μΉν©λλ€. μ΄ μ€λΉλ€μ λΌλ ꡬ쑰μ λ§μΆ°μ λ§λ€μ΄μ§λλ€.
-
3λ¨κ³: μΈλ²½κ³Ό μΈν
리μ΄(
Presentation Layer
)- λͺ¨λ λ΄λΆ κ΅¬μ‘°κ° μμ±λ ν, μ¬λλ€μ΄ λ³΄κ³ μ¬μ©ν μ μλλ‘ μΈλ²½μ κΎΈλ―Έκ³ λ¬Έκ³Ό μ°½λ¬Έ(API μλν¬μΈνΈ)μ λ΅λλ€.
μ΄ μμλ₯Ό λ°λμ λμ κΈ°μ μ μΈ μ₯μ μ λ€μκ³Ό κ°μ΅λλ€.
-
μμ‘΄μ± μλ°©ν₯ κ°λ°
- Springμ κ³μΈ΅μ
Presentation β Business β Data Access
μμλ‘ μμ‘΄ν©λλ€. - μμ‘΄λλ λμ(μμͺ½ κ³μΈ΅)μ λ¨Όμ λ§λ€μ΄μΌ, μ΄λ₯Ό μ¬μ©νλ λ°κΉ₯ κ³μΈ΅μ μμ μ μΌλ‘ ꡬνν μ μμ΅λλ€.
- Springμ κ³μΈ΅μ
-
ννν κΈ°λ° μμμμ κ°λ°
- ν΅μ¬ λ°μ΄ν° ꡬ쑰μ λ‘μ§μ΄ μ΄λ―Έ μμ±λκ³ ν μ€νΈλ μνμμ UI/APIλ₯Ό κ°λ°νλ―λ‘, λμ€μ ꡬ쑰λ₯Ό λ€μλ ν° λ³κ²½μ΄ λ°μν νλ₯ μ΄ μ€μ΄λλλ€.
-
κ³μΈ΅λ³ λ¨μ ν
μ€νΈ μ©μ΄
- μμͺ½ κ³μΈ΅λΆν° λ§λ€λ©΄, κ° κ³μΈ΅μ΄ μμ±λ λλ§λ€ λ 립μ μΌλ‘ λ¨μ ν μ€νΈλ₯Ό μννκΈ° λ§€μ° νΈλ¦¬νμ¬ μ½λμ μμ μ±μ λμΌ μ μμ΅λλ€.