νΈλμμ
(Transaction)
μ΄λ λ°μ΄ν°λ² μ΄μ€μμ μνλλ νλ μ΄μμ μμ
μ νλμ λ
Όλ¦¬μ μΈ λ¨μλ‘ λ¬Άμ κ²μ λ§νλ€.
μ¦, "λͺ¨λ μμ μ΄ μ±κ³΅ν΄μΌ μ μ₯νκ³ , νλλΌλ μ€ν¨νλ©΄ μ λΆ λλλ¦°λ€"λ κ°λ
Commit
: λͺ¨λ μμ
μ΄ μ μ μ²λ¦¬ β DBμ λ°μRollback
: μ€κ°μ μ€ν¨ β μ΄μ μνλ‘ λλλ¦Όπ° μμ: A β B κ³μ’ μ‘κΈ
@Transactional
public void transfer(Account from, Account to, int amount) {
from.withdraw(amount); // A κ³μ’μμ μΆκΈ
to.deposit(amount); // B κ³μ’λ‘ μ
κΈ
}
μ κΈ μ€ μ€λ₯κ° λλ©΄ μΆκΈλ λλλ €μΌ νλ€. μ΄κ²μ΄
νΈλμμ
νΈλμμ μ μλ λ€ κ°μ§ νΉμ±μ λ§μ‘±ν΄μΌ νλ€.
νΉμ± | μ€λͺ |
---|---|
Atomicity (μμμ±) | λͺ¨λ μ±κ³΅νκ±°λ, λͺ¨λ μ€ν¨ν΄μΌ νλ€. |
Consistency (μΌκ΄μ±) | νΈλμμ μ ν DB μνκ° λ¬΄κ²°μ±μ λ§μ‘±ν΄μΌ νλ€. |
Isolation (κ³ λ¦½μ±) | λ€λ₯Έ νΈλμμ κ³Ό μνΈ κ°μμ΄ μμ΄μΌ νλ€. |
Durability (μ§μμ±) | 컀λ°λ λ°μ΄ν°λ μꡬμ μΌλ‘ μ μ₯λμ΄μΌ νλ€. |
κ³ λ¦½μ±μ΄ μμΌλ©΄ λ€μκ³Ό κ°μ λ¬Έμ κ° λ°μν μ μλ€.
λ¬Έμ μ ν | μ€λͺ |
---|---|
Dirty Read | μμ§ μ»€λ°λμ§ μμ λ°μ΄ν°λ₯Ό μ½μ |
Non-repeatable Read | κ°μ rowλ₯Ό λ λ² μ½μλλ° κ°μ΄ λ°λ |
Phantom Read | κ°μ 쑰건μΌλ‘ 쿼리νλλ° νμ μκ° λ°λ |