μ€νλ§μμ νΈλμμ μ²λ¦¬λ₯Ό μν΄
μ μΈμ νΈλμμ
μ μ¬μ©νλ€.
@Transactional
μ μ€νλ§ νλ μμν¬μμ μ 곡νλ μ΄λ Έν μ΄μ μΌλ‘, ν΄λΉ μ΄λ Έν μ΄μ μ λ©μλλ ν΄λμ€μ λΆμμΌλ‘μ¨ ν΄λΉ λ©μλλ ν΄λμ€ λ΄μ μμ μ νΈλμμ μ λ²μ λ΄μμ μ€ννλλ‘ μ§μ ν μ μλ€.
νΈλμμ μ μ¬λ¬ λ°μ΄ν°λ² μ΄μ€ μμ μ νλμ λ¨μλ‘ λ¬Άμ΄μ μ²λ¦¬νλ λ°©λ²μΌλ‘, λͺ¨λ μμ μ΄ μ±κ³΅μ μΌλ‘ μλ£λκ±°λ λͺ¨λ μ·¨μλλ κ²μ 보μ₯νλ€.
//ν΄λμ€ λ¨μ μ€μ @Service @Transactional public class TestService { public void test() { } public void test2() { } }
//λ©μλ λ¨μ μ€μ @Service public class TestService { @Transactional public void test() { } public void test2() { } }
- ν΄λμ€, λ©μλμ @Transactionalμ΄ μ μΈλλ©΄ ν΄λΉ ν΄λμ€μ νΈλμμ μ΄ μ μ©λ νλ‘μ κ°μ²΄ μμ±
- νλ‘μ κ°μ²΄λ @Transactionalμ΄ ν¬ν¨λ λ©μλκ° νΈμΆλ κ²½μ°, νΈλμμ μ μμνκ³ Commit or Rollbackμ μν
- CheckedException or μμΈκ° μμ λλ Commit μν
- UncheckedExceptionμ΄ λ°μνλ©΄ Rollback μν
@Transactionalμ μ°μ μμλ₯Ό κ°μ§κ³ μλ€.
ν΄λμ€ λ©μλ -> ν΄λμ€ -> μΈν°νμ΄μ€ λ©μλ -> μΈν°νμ΄μ€
ν΄λμ€ λ©μλκ° κ°μ₯ λλ€.
λ°λΌμ, 곡ν΅μ μΈ νΈλμμ κ·μΉμ ν΄λμ€, νΉλ³ν κ·μΉμ λ©μλμ μ μΈνλ€.
λν, μΈν°νμ΄μ€ λ³΄λ€ ν΄λμ€μ μ μ©νλ κ²μ κΆκ³ νλ€.
ν΄λμ€ κΈ°λ° νλ‘μμμ νΈλμμ
μ€μ μ μΈμν μ μλ€.
@Transactionalμ Proxy Modeμ AspectJ Modeκ° μλλ° defaultλ Proxy Modeμ΄λ€.
- Proxy Mode
- λ°λμ public λ©μλμ μ μ©λμ΄μΌ νλ€.
- @Transactionalμ΄ μ μ©λμ§ μμ Public Methodμμ @Transactionalμ΄ μ μ©λ Public Methodλ₯Ό νΈμΆν κ²½μ°, νΈλμμ μ΄ λμνμ§ μλλ€.