λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“ŒCS/DB

[DB] νŠΈλžœμž­μ…˜ μ „νŒŒ μ„€μ •

by dar0m! 2021. 5. 2.

κ°œλ…

Springμ—μ„œ μ‚¬μš©ν•˜λŠ” '@Transactional'은 ν•΄λ‹Ή λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜ μ•ˆμ—μ„œ 진행할 수 μžˆλ„λ‘ λ§Œλ“€μ–΄μ£ΌλŠ” 역할을 ν•œλ‹€. μ΄λ•Œ νŠΈλžœμž­μ…˜ λ‚΄λΆ€μ—μ„œ νŠΈλžœμž­μ…˜μ„ 또 ν˜ΈμΆœν•œλ‹€λ©΄ μƒˆλ‘œμš΄ νŠΈλžœμž­μ…˜μ΄ 생성될 μˆ˜λ„ 있고, 이미 νŠΈλžœμž­μ…˜μ΄ μžˆλ‹€λ©΄ λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ— ν•©λ₯˜ν•  μˆ˜λ„ μžˆλ‹€. μ§„ν–‰λ˜κ³  μžˆλŠ” νŠΈλžœμž­μ…˜μ—μ„œ λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ΄ 호좜될 λ•Œ μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€ μ •ν•˜λŠ” 것을 'νŠΈλžœμž­μ…˜ μ „νŒŒ μ„€μ •'이라 ν•œλ‹€.

 

μ „νŒŒ μ„€μ • μ˜΅μ…˜

νŠΈλžœμž­μ…˜μ˜ μ „νŒŒ 섀정은 '@Transactional'의 μ˜΅μ…˜ 'propagation'을 톡해 μ„€μ •ν•  수 μžˆλ‹€.
  1. REQUIRED (κΈ°λ³Έκ°’)
    • λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ΄ μ‘΄μž¬ν•œλ‹€λ©΄ λΆ€λͺ¨ νŠΈλžœμž­μ…˜μœΌλ‘œ ν•©λ₯˜
    • λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ μƒˆλ‘œμš΄ νŠΈλžœμž­μ…˜μ„ 생성
    • 쀑간에 둀백이 λ°œμƒν•œλ‹€λ©΄ λͺ¨λ‘ ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μ΄κΈ° λ•Œλ¬Έμ— 진행사항이 λͺ¨λ‘ λ‘€λ°±
    • 즉 ν•΄λ‹Ή λ‘œμ§μ€ νŠΈλžœμž­μ…˜ ν•˜λ‚˜λ§Œ μ‘΄μž¬ν•œλ‹€.
  2. REQUIRES_NEW
    • 무쑰건 μƒˆλ‘œμš΄ νŠΈλžœμž­μ…˜μ„ 생성
    • 각각의 νŠΈλžœμž­μ…˜μ΄ λ‘€λ°±λ˜λ”λΌλ„ μ„œλ‘œ 영ν–₯을 주지 μ•ŠμŒ
    • 각각 컀밋, 둀백을 λ”°λ‘œλ”°λ‘œ ν•œλ‹€.
  3. MANDATORY
    • λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ— ν•©λ₯˜
    • λ§Œμ•½ λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ΄ μ—†λ‹€λ©΄ μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚΄
  4. NESTED
    • λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ΄ μ‘΄μž¬ν•œλ‹€λ©΄ 쀑첩 νŠΈλžœμž­μ…˜μ„ 생성
    • μ€‘μ²©λœ νŠΈλžœμž­μ…˜ λ‚΄λΆ€μ—μ„œ λ‘€λ°± λ°œμƒμ‹œ ν•΄λ‹Ή 쀑첩 νŠΈλžœμž­μ…˜μ˜ μ‹œμž‘ μ§€μ κΉŒμ§€λ§Œ λ‘€λ°±
      • λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ—μ„œ 둀백이 λ°œμƒν•˜λ©΄ λͺ¨λ“  νŠΈλžœμž­μ…˜μ„ λ‘€λ°±ν•œλ‹€.
    • 쀑첩 νŠΈλžœμž­μ…˜μ€ λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ΄ 컀밋될 λ•Œ 같이 μ»€λ°‹λœλ‹€.
      • 쀑첩 νŠΈλžœμž­μ…˜μ΄ λλ‚˜λ„ λͺ¨λ“  컀밋은 λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ˜ λμ—μ„œ 이루어진닀.
    • λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ μƒˆλ‘œμš΄ νŠΈλžœμž­μ…˜μ„ 생성
  5. NEVER
    • νŠΈλžœμž­μ…˜μ„ μƒμ„±ν•˜μ§€ μ•ŠλŠ”λ‹€.
    • λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ΄ μ‘΄μž¬ν•˜λ©΄ μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚΄
    • λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ νŠΈλžœμž­μ…˜μ„ μƒμ„±ν•˜μ§€ μ•Šκ³  κΈ°λŠ₯을 μ§„ν–‰ν•œλ‹€.
  6. SUPPORTS
    • λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ΄ μžˆλ‹€λ©΄ ν•©λ₯˜
    • 진행쀑인 λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ΄ μ—†λ‹€λ©΄ νŠΈλžœμž­μ…˜μ„ μƒμ„±ν•˜μ§€ μ•ŠμŒ
  7. NOT_SUPPORTED
    • λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ΄ μžˆλ‹€λ©΄ 보λ₯˜
    • 진행쀑인 λΆ€λͺ¨ νŠΈλžœμž­μ…˜μ΄ μ—†λ‹€λ©΄ νŠΈλžœμž­μ…˜μ„ μƒμ„±ν•˜μ§€ μ•ŠμŒ

 

μ°Έκ³ 

 

λŒ“κΈ€