νΈλμμ
μ€λͺ
λκ° μ΄μμ 쿼리λ₯Ό ν μμ
μΌλ‘ μ€νν΄μΌ ν λ μ¬μ©νλκ²
νΈλμμ
μΌλ‘ λ¬ΆμΈ μΏΌλ¦¬ μ€ νλλΌλ μ€ν¨νλ©΄ μ 체 μ€ν¨λ‘ κ°μ£Ό -> κΈ°μ‘΄μνλ‘ λλλ¦Ό (rollback)
νΈλμμ
μΌλ‘ λ¬ΆμΈ μΏΌλ¦¬κ° λͺ¨λ μ±κ³΅ν κ²½μ° -> μ€μ λ°μ (commit)
@Transactional
μ€λͺ
μ€νλ§μμ νΈλμμ
λ²μλ₯Ό μ€μ ν μ μλλ‘ νλ μ΄λ
Έν
μ΄μ
νΈλμμ
λ²μλ₯Ό μ€μ νκ³ μΆμλ μ¬μ©ν¨.
μ λλ‘λ λμμ νκΈ° μν΄μλ PlatformTransactionManager λΉ μ€μ & @Transactional μ΄λ
Έν
μ΄μ
νμ±ν μ€μ μ΄ νμ
PlatformTransactionManager
- νΈλμμ μ²λ¦¬μ νμν API μ 곡
- κ°λ°μκ° APIλ₯Ό νΈμΆνλ κ²μΌλ‘ νΈλμμ μ‘°μμ μνν μ μλ€.
- λνμ μΈ κ΅¬ν ν΄λμ€: DataSourceTransactionManager, HibernateTransactionManager, JpaTransactionManager, JtaTransactionManager, WebLogicJtaTransactionManager, WebSphereUowTransactionManager
@Transactional μ΄λ Έν μ΄μ νμ±ν μ€μ
- @EnableTransactionManagement μ΄λ Έν μ΄μ μ μ΄μ©νμ¬ @Transactional μ΄λ Έν μ΄μ μ΄ λΆμ λ©μλλ₯Ό νΈλμμ λ²μμμ μ€ννλ κΈ°λ₯μ νμ±ν
- λ±λ‘λ PlatformTransactionManager λΉμ μ¬μ©ν΄μ νΈλμμ μ μ μ©νλ€.
@Transactionalκ³Ό νλ‘μ
μ€νλ§μ νΈλμμ μ μ¬μ©νκΈ° μν΄ λ΄λΆμ μΌλ‘ AOPμ μ΄μ©ν¨!
..
νΈλμμ κ΄λ¦¬μ μ μ
λ‘컬νΈλμμ
μ μ¬μ©νλ κ²½μ° JDBC API νΈμΆ, νΈλμμ
μ μ΄λ₯Ό μννλ DataSourceTransactionManagerμ μ¬μ©νλ€.
λ¨μΌ λ°μ΄ν° μ μ₯μμ λν μ¬λ¬ μ‘°μμ νλμ λ
Όλ¦¬μ λ¨μλ‘ μ²λ¦¬νκ³ μΆμλ μ¬μ©
κΈλ‘λ²νΈλμμ μ μ¬μ©νλ κ²½μ°(μ¬λ¬ λ°μ΄ν° μ μ₯μμ κ±Έμ³μ μ μ©λλ κ²½μ°: DBκ° μ¬λ¬κ°μ΄κ³ , κ°κ° μ‘°μ μν λ¨μλ₯Ό νλμ νΈλμμ μΌλ‘ λ¬Άλ κ²½μ°) JtaTransactionManager μ μ¬μ©
μ μΈμ νΈλμμ
μ€λͺ
commit, rollback λ±μ μ²λ¦¬λ₯Ό λΉμ§λμ€ λ‘μ§μ μμ νμ§ μκ³ μ¬μ©νλ λ°©λ² (@Transactional)
νμμ 보
value
transactionManager
propagation
isolation
timeout
readOnly
rollbackFor
rollbackForClassName
noRollbackFor
noRollbackForClassName
.....
λͺ μμ νΈλμμ
μ€λͺ
컀λ°μ΄λ λ‘€λ°±κ³Ό κ°μ νΈλμμ
μ²λ¦¬λ₯Ό μμ€μ½λμ μ§μ λͺ
μνλ λ°©λ².
λ©μλ λ¨μλ³΄λ€ λ μμ λ¨μλ‘ νΈλμμ
μ μ μ΄νκ³ μΆμλ μ¬μ©.
PlatformTransactionManager, TransactionTemplateμ μ¬μ©νλ λκ°μ§ λ°©λ² μ 곡
....
νΈλμμ 격리μμ€
μ€λͺ
λμμ DBμ μ κ·Όν λ κ·Έ μ κ·Όμ μ΄λ»κ² μ μ΄ν μ§μ λν μ€μ μ λ€λ£Έ.
DEFAULT, READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
....
μ°Έκ³
(μ±
) μ΄λ³΄ μΉ κ°λ°μλ₯Ό μν μ€νλ§5 νλ‘κ·Έλλ° μ
λ¬Έ
(μ±
) μ€νλ§ μ² μ μ
λ¬Έ
'κ°λ° > spring' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[AOP] AOP μ μ© κ΄λ ¨ μ΄μ (0) | 2024.05.14 |
---|---|
[WebSocket] μΉμμΌ (0) | 2022.03.29 |
Spring - μ€νλ§ MVC κ°λ¨ μ 리 (0) | 2021.06.05 |
Spring - DI (Dependency Injection) (0) | 2021.06.01 |
Spring - AOP(Aspect-Oriented Programming) (0) | 2021.05.25 |