Q. μ€νλ§ νλ μμν¬μμλ νΈλμμ μ μ²λ¦¬ν λ @Trasnactional μ μ¬μ©νλλ°, μ΄ @Transactional μ΄λ Έν μ΄μ μλ 7κ°μ§ μ ν λ°©λ²μ΄ μλ€, μ΄λ€ κ²λ€μ΄ μλκ°?
A. @Transactional μ΄λ Έν μ΄μ μ μ¬μ©νλ©΄ μ μ©λ ν΄λμ€ λλ λ©μλμ νΈλμμ μ΄ μ μ©λλ€. λ°λΌμ ν΄λμ€μ ν κ²μΈμ§, λ©μλμ ν κ²μΈμ§ νλ¨μ μ ν΄μΌ νλ€. 7κ°μ§ Propagation(μ ν) λ°©λ²μ
- REQUIRED : λΆλͺ¨ νΈλμμ λ΄μμ μ€ννλ©° λΆλͺ¨ νΈλμμ μ΄ μμ κ²½μ° μλ‘μ΄ νΈλμμ μ μμ±νλ€.
- REQUIREDS_NEW : λΆλͺ¨ νΈλμμ μ 무μνκ³ λ¬΄μ‘°κ±΄ μλ‘μ΄ νΈλμμ μ΄ μμ±λλ€.
- SUPPORT : λΆλͺ¨ νΈλμμ λ΄μμ μ€ννλ©° λΆλͺ¨ νΈλμμ μ΄ μμ κ²½μ° nontransactionally λ‘ μ€νλλ€.
- MANDATORY : λΆλͺ¨ νΈλμμ λ΄μμ μ€νλλ©° λΆλͺ¨ νΈλμμ μ΄ μμ κ²½μ° μμΈκ° λ°μνλ€.
- NOT_SUPPORT : nontransactionally λ‘ μ€νλλ©° λΆλͺ¨ νΈλμμ λ΄μμ μ€νλ κ²½μ° μΌμ μ μ§νλ€.
- NEVER : nontransactionally λ‘ μ€νλλ©° λΆλͺ¨ νΈλμμ μ΄ μ‘΄μ¬νλ€λ©΄ μμΈκ° λ°μνλ€.
- NESTED : ν΄λΉ λ©μλκ° λΆλͺ¨ νΈλμμ μμ μ§νλ κ²½μ° λ³κ°λ‘ 컀λ°λκ±°λ λ‘€λ°±λ μ μλ€. λλ¬μΌ νΈλμμ μ΄ μμ κ²½μ° REQUIRED μ λμΌνκ² μμ©νλ€.
propagation μ λ°λ‘ μ€μ νμ§ μμμ κ²½μ° default κ°μ REQUIRED μ΄λ€.
-
μΆκ°μ μΌλ‘ νΈλμμ νλ©΄ κ°μ΄ λμ€λ λ§μ΄ isolation (격리) λ 벨μ λν μκΈ°μΈλ°, λμ¨ κΉμ κ°μ΄ μ 리νμλ©΄
-
READ_UNCOMMITTED (level 0)
- νΈλμμ μ΄ μ²λ¦¬μ€μΈ νΉμ μμ§ μ»€λ°λμ§ μμ λ°μ΄ν°λ₯Ό λ€λ₯Έ νΈλμμ μ΄ μ½λ κ²μ νμ©νλ€.
-
READ_COMMITTED (level 1) - default
- dirty read λ₯Ό λ°©μ§νμ¬ νΈλμμ μ΄ μ»€λ°λμ΄ νμ λ λ°μ΄ν°λ§μ μ½λ κ²μ νμ©νλ€.
- ex) Aμ¬μ©μκ° λ°μ΄ν°λ₯Ό μμ νκ³ μλ λμ Bμ¬μ©μλ λ°μ΄ν°μ μ κ·Όν μ μλ€.
dirty read λ?
νΈλμμ μμ μ²λ¦¬νλ μμ μ΄ μλ£λμ§ μμλλ°λ λ€λ₯Έ νΈλμμ μμ λ³Ό μ μλ νμμ΄λ©°, READ_UNCOMMITTED (level 0) μμλ§ λ°μνλ€.
-
REPEATABLE_READ (level 2)
- νΈλμμ μ΄ μλ£λ λκΉμ§ SELECT λ¬Έμ₯μ΄ μ¬μ©νλ λͺ¨λ λ°μ΄ν°μ shared lock μ΄ κ±Έλ¦¬λ―λ‘ λ€λ₯Έ μ¬μ©μλ κ·Έ μμμ ν΄λΉλλ λ°μ΄ν°μ λν μμ μ΄ λΆκ°λ₯νλ€
- μ ν νΈλμμ μ΄ μ½μ λ°μ΄ν°λ νΈλμμ μ΄ μ’ λ£λ λκΉμ§ νν νΈλμμ μ΄ κ°±μ νκ±°λ μμ νλ κ²μ λΆνν¨μΌλ‘μ¨ κ°μ λ°μ΄ν°λ₯Ό λλ² μΏΌλ¦¬νμ λ μΌκ΄μ± μλ κ²°κ³Όλ₯Ό 리ν΄νλ€.
-
SERIALIZABLE (level 3)
- μλ²½ν μ½κΈ° μΌκ΄μ± λͺ¨λλ₯Ό μ 곡νλ€.
- λ°μ΄ν°μ μΌκ΄μ± λ° λμμ±μ μν΄ MVCC(Multi Version Concurrency Control - λ€μ€ μ¬μ©μ λ°μ΄ν°λ² μ΄μ€ μ±λ₯μ μν κΈ°μ λ‘ λ°μ΄ν° μ‘°ν μ LOCK μ μ¬μ©νμ§ μκ³ λ°μ΄ν°μ λ²μ μ κ΄λ¦¬ν΄ λ°μ΄ν°μ μΌκ΄μ± λ° λμμ±μ λμ΄λ κΈ°μ ) μ μ¬μ©νμ§ μλλ€.
- νΈλμμ μ΄ μλ£λ λκΉμ§ SELECT λ¬Έμ₯μ΄ μ¬μ©νλ λͺ¨λ λ°μ΄ν°μ shared lock μ΄ κ±Έλ¦¬λ―λ‘ λ€λ₯Έ μ¬μ©μλ κ·Έ μμμ ν΄λΉλλ λ°μ΄ν°μ λν μμ λ° μ λ ₯μ΄ λΆκ°λ₯νλ€.
-