πŸ“š Study/Spring

repository, domain, controller, service ν…ŒμŠ€νŠΈ μ½”λ“œλ‘œ λ‹€ ν…ŒμŠ€νŠΈ ν•΄μ•Όν•˜λŠ”μ§€? ν…ŒμŠ€νŠΈ μˆœμ„œλ„ μ•Œμ•„λ³΄μž

kkh1902 2023. 5. 1. 21:28
728x90
λ°˜μ‘ν˜•

일반적으둜 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. μ‹œμŠ€ν…œ ν…ŒμŠ€νŠΈ

- 전체 μ‹œμŠ€ν…œμ„ λŒ€μƒμœΌλ‘œ ν•˜λŠ” ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.

- μ„±λŠ₯, μ•ˆμ •μ„±, λ³΄μ•ˆ λ“± μ‹œμŠ€ν…œ μ „λ°˜μ μΈ λ™μž‘μ„ κ²€μ¦ν•©λ‹ˆλ‹€.

 

μ΄λŸ¬ν•œ μˆœμ„œλŠ” ν…ŒμŠ€νŠΈ μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ™€ 디버깅을 μš©μ΄ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄ 일반적으둜 λ”°λ₯΄λŠ” λ°©μ‹μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 각 ν”„λ‘œμ νŠΈμ˜ 상황에 따라 ν…ŒμŠ€νŠΈ μˆœμ„œκ°€ λ‹¬λΌμ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

728x90
λ°˜μ‘ν˜•