repository, domain, controller, service ν μ€νΈ μ½λλ‘ λ€ ν μ€νΈ ν΄μΌνλμ§? ν μ€νΈ μμλ μμ보μ
μΌλ°μ μΌλ‘ Spring Boot νλ‘μ νΈμμλ Repository, Service, Controller λ±μ κ³μΈ΅(layer)λ³λ‘ ν μ€νΈ μ½λλ₯Ό μμ±ν©λλ€.
Repository
λ°μ΄ν°λ² μ΄μ€μ λν CRUD(Create, Read, Update, Delete) λ‘μ§μ λ΄λΉνλ μ½λλ₯Ό ν μ€νΈν©λλ€. λ³΄ν΅ In-Memory DB(μ: H2)λ₯Ό μ΄μ©ν΄μ ν μ€νΈλ₯Ό μνν©λλ€.
Service
λΉμ¦λμ€ λ‘μ§μ λ΄λΉνλ μ½λλ₯Ό ν μ€νΈν©λλ€. Repositoryλ₯Ό Mockingνμ¬ ν μ€νΈλ₯Ό μνν©λλ€.
Controller
HTTP μμ²κ³Ό μλ΅ μ²λ¦¬λ₯Ό λ΄λΉνλ μ½λλ₯Ό ν μ€νΈν©λλ€. MockMvcλ₯Ό μ΄μ©ν΄μ ν μ€νΈλ₯Ό μνν©λλ€.
λν, Domainμ μΌλ°μ μΌλ‘ λΉμ¦λμ€ λ‘μ§μ λ΄κ³ μλ ν΄λμ€λ‘, λ³λμ ν μ€νΈμ½λκ° νμνμ§ μμ μ μμ΅λλ€. νμ§λ§, Domain κ°μ²΄μ λν μ ν¨μ± κ²μ¬ λ‘μ§μ΄ μλ€λ©΄, μ΄λ₯Ό ν μ€νΈνκΈ° μν ν μ€νΈ μ½λλ₯Ό μμ±ν μ μμ΅λλ€.
κ²°λ‘ μ μΌλ‘, λͺ¨λ κ³μΈ΅μ μ½λλ₯Ό ν μ€νΈνμ§ μμλ λ©λλ€. νμ§λ§, μ€μν λΉμ¦λμ€ λ‘μ§μ΄λ μλ¬ νΈλ€λ§κ³Ό κ°μ΄ ν μ€νΈκ° νμμ μΈ λΆλΆμ λν΄μλ λ°λμ ν μ€νΈ μ½λλ₯Ό μμ±ν΄μΌ ν©λλ€.
μΌλ°μ μΌλ‘ ν μ€νΈ μ½λμ μμλ λ€μκ³Ό κ°μ΅λλ€.
1. μ ν¨μ± κ²μ¬ λ° μμΈ μ²λ¦¬
- μ λ ₯ κ°μ λν κ²μ¦μ΄λ μλͺ»λ μ λ ₯μ λν μμΈ μ²λ¦¬λ₯Ό λ¨Όμ μμ±ν©λλ€.
2. λ¨μ ν μ€νΈ
- λͺ¨λ λλ ν¨μ λ¨μμ ν μ€νΈλ₯Ό μμ±ν©λλ€.
- μ΄ λ¨κ³μμλ λͺ¨λ λλ ν¨μκ° μλν λλ‘ μλνλμ§ νμΈν©λλ€.
3. ν΅ν© ν μ€νΈ
- λ¨μ ν μ€νΈλ₯Ό ν΅κ³Όν λͺ¨λμ΄λ ν¨μλ€μ ν΅ν©νμ¬ μ 체 μμ€ν μ λμμ ν μ€νΈν©λλ€.
4. μμ€ν ν μ€νΈ
- μ 체 μμ€ν μ λμμΌλ‘ νλ ν μ€νΈλ₯Ό μνν©λλ€.
- μ±λ₯, μμ μ±, 보μ λ± μμ€ν μ λ°μ μΈ λμμ κ²μ¦ν©λλ€.
μ΄λ¬ν μμλ ν μ€νΈ μ½λμ μ μ§λ³΄μμ λλ²κΉ μ μ©μ΄νκ² νκΈ° μν΄ μΌλ°μ μΌλ‘ λ°λ₯΄λ λ°©μμ λλ€. κ·Έλ¬λ κ° νλ‘μ νΈμ μν©μ λ°λΌ ν μ€νΈ μμκ° λ¬λΌμ§ μ μμ΅λλ€.