Transactional
μ€νλ§μ PlatformTransactionManager
μΈν°νμ΄μ€λ₯Ό ν΅ν΄ νΈλμμ
μ μΆμννκ³ μ μΈμ νΈλμμ
μ μ§μνμ¬ νΈλμμ
μ νΈλ¦¬νκ² μ¬μ©ν μ μλλ‘ μ§μνλ€.
@Transactional
μ ν΅ν μ μΈμ νΈλμμ
κ΄λ¦¬ λ°©μμ μ¬μ©νλ©΄ νλ‘μ λ°©μμ AOPκ° μ μ©λλλ° κ·Έλ‘ μΈν΄ μλμ κ°μ νΉμ§μ κ°μ§κ² λλ€.
@Transactional
μ λ Έν μ΄μ μ΄ νΉμ ν΄λμ€λ λ©μλμ νλλΌλ μμΌλ©΄ νΈλμμ AOPλ νλ‘μλ₯Ό λ§λ€μ΄ μ€νλ§ μ»¨ν μ΄λμ λ±λ‘μ€μ κ°μ²΄ λμ μ νλ‘μλ₯Ό μ€νλ§ λΉμ λ±λ‘ν λ€ νλ‘μλ μ€μ κ°μ²΄λ₯Ό μ°Έμ‘°
λ§μ½ λ€λ₯Έ κ³³μμ ν΄λΉ κ°μ²΄λ₯Ό μμ‘΄κ΄κ³ μ£Όμ μ μμ²νκ² λλ©΄ μ€νλ§ μ»¨ν μ΄λμμ μ€μ κ°μ²΄ λμ μ λ±λ‘λμ΄ μλ νλ‘μ κ°μ²΄λ₯Ό μ£Όμ
μ΅μ’ μ μΌλ‘
λ€λ₯Έ κ°μ²΄
->μ€μ κ°μ²΄
->νλ‘μ κ°μ²΄
μμΌλ‘ μμ‘΄κ΄κ³κ° μ£Όμ λκ² λ¨
** νλ‘μλ κΈ°μ‘΄ μ€μ κ°μ²΄λ₯Ό μμν΄μ λ§λ€μ΄μ§κΈ° λλ¬Έμ λ€νμ±μ μ§μνμ¬ μ€μ κ°μ²΄μ νλ‘μ κ°μ²΄κ° μ£Όμ λ μ μλ€.
νΈλμμ
λμ λ°©μ
νλ‘μ κ°μ²΄κ° μμ²μ λ¨Όμ λ°μ
νλ‘μ κ°μ²΄μμ νΈλμμ μμ
νλ‘μ κ°μ²΄μμ μ€μ κ°μ²΄μ λ©μλ νΈμΆ
μ€μ κ°μ²΄ λ‘μ§ μν
νλ‘μ κ°μ²΄μμ νΈλμμ μ»€λ° λλ λ‘€λ°±
νΈλμμ
μ°μ μμ
@Transactional
μ λ
Έν
μ΄μ
μ ν΄λμ€, μΈν°νμ΄μ€, λ©μλμ μ μ©ν μ μμΌλ©°, μ°μ μμλ λ ꡬ체μ μ΄κ³ μμΈν κ²μ΄ λμ μ°μ μμλ₯Ό κ°μ§λ κ²μ μμΉμΌλ‘ νλ€.
μΆκ°μ μΌλ‘ μ κ·Όμ μ΄μκ° publicμΈ κ²½μ°μλ§ νΈλμμ
μ΄ μ μ©λλ€.(κ³Όλνκ² μ μ©λλ κ²μ λ°©μ§)
ν΄λμ€μ λ©μλ
ν΄λμ€
μΈν°νμ΄μ€μ λ©μλ
μΈν°νμ΄μ€
μκΈ° νΈμΆ(Self Invocation)
@Transactional
μ΄ μ μ© λμ λ νΈλμμ
μ΄ μ μ©μ νλ‘μ κ°μ²΄λ₯Ό ν΅ν΄ μνλλλ°, λ§μ½ νλ‘μ κ°μ²΄λ₯Ό κ±°μΉμ§ μκ³ λμ κ°μ²΄λ₯Ό μ§μ νΈμΆνκ² λλ©΄ νΈλμμ
μ΄ μ μ©λμ§ μλλ€.
보ν΅μ κ²½μ°λ νλ‘μ κ°μ²΄λ₯Ό κ±°μΉκΈ° λλ¬Έμ λ¬Έμ κ° λμ§ μμ§λ§, λμ κ°μ²΄ λ΄λΆμμ λ©μλ νΈμΆμ νκ² λλ©΄ νλ‘μλ₯Ό κ±°μΉμ§ μκ² λμ΄ μμ λ¬Έμ κ° λ°μν μ μλ€.
ν΄λΌμ΄μΈνΈμμ external λ©μλλ₯Ό νΈμΆνμ λ λ€μκ³Ό κ°μ νλ‘μΈμ€κ° μ§νλλ€.
ν΄λΌμ΄μΈνΈμμ νλ‘μ νΈμΆ
νλ‘μμμ external λ©μλμ νΈλμμ μ΄ μ μ©λμ΄ μμ§ μκΈ° λλ¬Έμ νΈλμμ μμ΄ λ©μλ νΈμΆ
μ€μ external λ©μλ μ€ν
external λ©μλ λ΄λΆμμ internal λ©μλ νΈμΆ
μ€ν λ internal λ©μλλ μ€μ κ°μ²΄μμ μ€νλκΈ° λλ¬Έμ νΈλμμ μ΄ μ μ©λμ§ μλλ€.
μ΄λ₯Ό λ°©μ§νκΈ° μν΄ μ¬λ¬ ν΄κ²°λ°©μλ€μ΄ μ‘΄μ¬νμ§λ§ λ³΄ν΅ μ€λ¬΄μμλ λ³λ ν΄λμ€λ‘ λΆλ¦¬νμ¬ νΈμΆνλ κ²μ΄ κ°μ₯ μ μ ν λ°©λ²μ΄λ€.
μ΄κΈ°ν μμ
μ€νλ§ μ΄κΈ°ν μμ μλ νΈλμμ AOPκ° μ μ©λμ§ μμ μ μκΈ° λλ¬Έμ νΈλμμ μ΄ νμν λ‘μ§μ΄ νμν λ©μλ μ€ν μμ μ μ€νλ§ μ»¨ν μ΄λκ° μμ ν μμ±λκ³ λ λ€μ νΈμΆν μ μλλ‘ μ€μ νλ κ²μ΄ μ’λ€.
νΈλμμ
μ΅μ
@Transactional
μ λ
Έν
μ΄μ
μ ν΅ν΄ νΈλμμ
μ μ μ©ν λ μλμ κ°μ΄ μ΅μ
μ μ€μ ν μ μμΌλ©°, μ§μ νμ§ μμ κ²½μ°μ κΈ°λ³Έκ°μ΄ μ μ©λλ€.
μ λ Έν μ΄μ μ μ μ©ν μ μλ μ΅μ λ€μ μλμ κ°λ€.
1. rollbackFor / noRollbackFor
μμΈ λ°μμ μ€νλ νΈλμμ μ λ‘€λ°± μ μ± μΌλ‘ κΈ°λ³Έ μ μ± μ μλμ κ°λ€.
μΈμ²΄ν¬ μμΈ: λ‘€λ°±
μ²΄ν¬ μμΈ: λ‘€λ°±νμ§ μκ³ μ»€λ°
μ΄ μ΅μ μ μΆκ°λ‘ λ‘€λ°±ν μμΈλ₯Ό μ§μ νκ² λλ©΄, ν΄λΉ μμΈκ° λ°μνμ λ λ‘€λ°±νκ² λλ€.
λ°λλ‘ noRollbackFor
μ΅μ
μ λ‘€λ°±νμ§ μμ μμΈλ₯Ό μ§μ ν μ μλ€.
2. isolation
νΈλμμ
격리 μμ€ μ§μ μΌλ‘ λ³΄ν΅ λ°μ΄ν°λ² μ΄μ€μμ μ€μ ν νΈλμμ
μμ€μ μ¬μ©νλ DEFAULT
λ₯Ό μ¬μ©νλ€.
격리 μμ€μ λν μμΈν λ΄μ©μ 격리 μμ€ μ°Έκ³
3. timeout
νΈλμμ νμμμμ μ§μ νλ μ΅μ μΌλ‘ κΈ°λ³Έκ°μ -1λ‘ λ¬΄μ νμ΄λ€.
4. readOnly
μ½κΈ° μ μ© νΈλμμ μΌλ‘ κΈ°λ³Έκ°μ falseμΌλ‘, μ½κΈ° μ°κΈ°κ° λͺ¨λ κ°λ₯ν νΈλμμ μ΄ μ μ©λλ€. true μ΅μ μ μ¬μ©νλ©΄ μ½κΈ° μ μ© νΈλμμ μ΄ μ μ©λμ΄ μ½κΈ° μμ λ§ κ°λ₯νλ€.(λλΌμ΄λ²λ DBμ λ°λΌ μ½κΈ° μ μ© νΈλμμ μ μ§μνμ§ μμ μ μλ€.) μ½κΈ° μ μ©μ μ μ©νκ² λλ©΄ μλμ κ°μ μ°¨μ΄μ μ΄ μλ€.
νλ μμν¬: μ½κΈ° μ μ©μ΄κΈ° λλ¬Έμ λ³κ²½μ μ¬μ©λλ νλ¬μλ₯Ό νΈμΆν νμκ° μμΌλ©°, λ³κ²½ κ°μ§λ₯Ό μν μ€λ μ· κ°μ²΄λ₯Ό μμ±νμ§ μμ λ€ν₯ν μ±λ₯μ μ΄μ μ κ°μ Έμ¬ μ μλ€.
JDBC λλΌμ΄λ²: λ³κ²½ μΏΌλ¦¬κ° λ°μνλ©΄ μμΈλ₯Ό λ°μμν€κΈ° λλ¬Έμ λ³κ²½ 쿼리λ₯Ό μ€ννμ§ μλλ€.
λ°μ΄ν°λ² μ΄μ€: μ½κΈ° μ μ© νΈλμμ μ μ½κΈ°λ§ νλ©΄ λμ΄ λ΄λΆ μ±λ₯ μ΅μ νκ° λ°μνλ€.(λ―Έλ―Έν μ°¨μ΄)
5. propagation
νΈλμμ
μ ν μ΅μ
μΌλ‘ κΈ°λ³Έκ°μ REQUIRED
λ‘, λλΆλΆ μ΄ μ΅μ
μ μ¬μ©νλ€.
REQUIRED
νλμ νΈλμμ μ¬μ©
μλ‘μ΄ νΈλμμ μμ±
κΈ°μ‘΄ νΈλμμ μ¬μ©
REQUIRES_NEW
νμ μλ‘μ΄ νΈλμμ μ¬μ©
μλ‘μ΄ νΈλμμ μμ±
μλ‘μ΄ νΈλμμ μμ±
SUPPORT
νΈλμμ μ§μ
νΈλμμ μμ΄ μ§ν
κΈ°μ‘΄ νΈλμμ μ¬μ©
NOT_SUPPORTED
νΈλμμ λ―Έμ§μ
νΈλμμ μμ΄ μ§ν
νΈλμμ μμ΄ μ§ν(κΈ°μ‘΄ νΈλμμ 보λ₯)
MANDATORY
νΈλμμ μ΄ λ°λμ μ‘΄μ¬ν΄μΌ ν¨
μμΈ λ°μ
κΈ°μ‘΄ νΈλμμ μ¬μ©
NEVER
νΈλμμ μ μ¬μ©νμ§ μμ
νΈλμμ μμ΄ μ§ν
μμΈ λ°μ
isolation , timeout , readOnly λ νΈλμμ μ΄ μ²μ μμλ λλ§ μ μ©λλ©°, νΈλμμ μ μ°Έμ¬νλ κ²½μ°μλ μ μ©λμ§ μλλ€.
νΈλμμ
μ ν νλ¦ - REQUIRED μ΅μ
νΈλμμ
μ ν μ΅μ
μ΄ REQUIRED
μΈ κ²½μ° μ΄λ―Έ νΈλμμ
μ΄ μ‘΄μ¬νλ©΄ ν΄λΉ νΈλμμ
μ μ¬μ©νκ³ μμΌλ©΄ μλ‘μ΄ νΈλμμ
μ μμ±νκ² λλ€.
νλμ 컀λ°μ΄λΌλ λ°μνλ©΄ μ 체 νΈλμμ
μ΄ μ»€λ°λκ³ , νλμ λ‘€λ°±μ΄λΌλ λ°μνλ©΄ μ 체 νΈλμμ
μ΄ λ‘€λ°±λλ©°, κ·Έ μ리μ μμλ μλμ κ°λ€.
μ κ· νΈλμμ μ΄ μλ κ²½μ°μ 컀λ°/λ‘€λ°±μ νκ² λλ©΄ 컀λ₯μ μ΄ λλλ²λ¦¬κΈ° λλ¬Έμ μ€μ λ‘ μ»€λ₯μ μ κ°μ Έμ¨ 맀λμ μμλ§ μ»€λ°/λ‘€λ°±μ μννκ³ , μ κ· νΈλμμ μ΄ μλ κ²½μ°μλ μ€μ λ‘ νλ κ²μ΄ μλ λ Όλ¦¬μ μΌλ‘λ§ μ»€λ°/λ‘€λ°±μ μννμ¬ μ 체 νΈλμμ κ²°κ³Όμ μν₯μ μ€ μ μκ² νλ€.
λ΄λΆ νΈλμμ λ‘€λ°± μ λ‘κ·Έ
μ°Έκ³ μλ£
Last updated
Was this helpful?