Aggregate, Value

· β˜• 2 min read · πŸ‘€... views

μ€‘μš”ν•œ 도메인 λ‘œμ§μ€ λ„λ©”μΈμœΌλ‘œ ν•˜μž.

Service Layer 에 set λ©”μ†Œλ“œκ°€ 있으면 일단 μ˜μ‹¬ -> 이 뢀뢄을 도메인 μ˜μ—­μœΌλ‘œ λ³€κ²½ν•  수 μžˆλ„λ‘ ν•˜μž

Aggregate

Entity + Value 의 κ°œλ… (포함관계에 μžˆλ‹€, 즉 μ—¬λŸ¬κ°œμ˜ Entity + Value 의 λͺ¨μŒμ΄ 될 수 있음.)
(라이프 사이클이 동일할 κ°€λŠ₯성이 λ†’λ‹€)

Aggregate 에 Root λ₯Ό λ§Œλ“€κ³ , 일관성(Consistency)이 깨지지 μ•Šλ„λ‘ Root에 μ±…μž„μ„ λΆ€μ—¬

  • μΌκ΄€μ„±μ΄λž€ κ΅¬μ„±μš”μ„œλ“€ κ°„μ˜ λΆˆμΌμΉ˜κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 것.
    즉, Root λ₯Ό ν†΅ν•΄μ„œλ§Œ ν•˜μœ„ Value 듀을 λ³€κ²½ν•  수 μžˆλ„λ‘ 함.

(μ—¬κΈ°μ„œ value κ°€ μžμ‹ λ§Œμ˜ pk λ₯Ό 가지고 μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— value μž„.. EntityλŠ” DB 둜 봀을 λ•Œ pkκ°€ ν¬ν•¨λœ ν…Œμ΄λΈ”μ΄λΌ λ³Ό 수 μžˆμœΌλ‹ˆ..)

Value λ³€κ²½

  1. Set 을 ν†΅ν•˜μ—¬ 기쑴값을 λ³€κ²½ν•˜λŠ” 방법
  2. New λ₯Ό ν•˜μ—¬ 기쑴값을 λ³€κ²½ν•˜μ§€ μ•Šκ³  μƒˆλ‘œ λ§Œλ“œλŠ” 방법

2가지 방법이 쑴재.

ν•˜μ§€λ§Œ, 2번 방법을 μΆ”μ²œ μ΄μœ λŠ” new λ₯Ό μ‚¬μš©ν•  경우 λΆˆλ³€(Immutable) 이 되며, λΆˆλ³€μ΄ λ˜μ—ˆμ„ 경우 μ½”λ“œ 뢄석이 μš©μ΄ν•˜λ‹€.
(생각해보면, λ‹Ήμ—°ν•  μˆ˜λ„ μžˆλŠ” 것… 특히 Map 같은 Collection κ°μ²΄λ“€λ‘œ 움직일 λ•Œ, Map 을 λ„£μ–΄μ„œ Map 을 λ°›κ³ … Map 의 Key 값이 λ³€κ²½λ˜λŠ” κ²½μš°λ„ μžˆμ–΄μ„œ μ‚¬μ „μ •λ³΄λ‘œ μ•Œ 수 μ—†λŠ” 것듀을 get 으둜 κ°€μ Έμ˜€λŠ” 경우 그것이 이전뢀터 있던 값인지, μ‹ κ·œκ°’μΈμ§€λŠ” ν•΄λ‹Ή λ©”μ†Œλ“œ ν˜Ήμ€ 쿼리 μͺ½μ„ 직접 κΉŒλ³΄μ§€ μ•ŠλŠ” ν•œ λͺ¨λ¦„)

  • λΆˆλ³€μ— λŒ€ν•΄μ„œ 생각해보면 μΌλ¦¬λŠ” μžˆλ‹€κ³  생각함. 근데 μžλ°”μ—μ„œ λΆˆλ³€μœΌλ‘œ μ‚¬μš©ν•˜λ €λ©΄ final 을 λΆ™μ—¬μ„œ μ‚¬μš©ν•˜λŠ”λ°, κ°μ²΄λ‚˜ Map 같은 건 final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄λ„ λ³€κ²½ν•  수 μžˆλŠ” 걸둜 μ•Œκ³  있음.. 이 뢀뢄은 λ”°λ‘œ 더 찾아봐야 ν•  주제)

  • Repository = Aggreate λ‹¨μœ„λ‘œ 쑴재
    (이 뢀뢄은 μ’€ ν—·κ°ˆλ¦Ό. Repository λ₯Ό μ—¬νƒœ DB ν…Œμ΄λΈ” λ‹¨μœ„λ‘œ μƒκ°ν•˜κ³  μžˆμ—ˆκ³ , Entitry = Repository 둜 μƒκ°ν•˜κ³  μžˆμ—ˆμŒ.
    근데 κ°‘μžκΈ° μ €λŸ° λ“±ν˜Έκ°€ μ„±λ¦½λœλ‹€κ³  ν•˜λ©΄…? 포함관계가 μ„±λ¦½λœλ‹€κ³ λŠ” ν•˜λ‚˜ 3개의 관계가 λͺ…ν™•ν•˜κ²Œ μž‘νžˆλŠ” 것은 μ•„λ‹˜)

μΆ”ν›„μ—λŠ” Aggregate λŠ” μ–΄λ””κΉŒμ§€ μ •μ˜ν•  수 μžˆλŠ”μ§€ 확인해보도둝 함.

Share on

snack
WRITTEN BY
snack
Web Programmer


What's on this Page