λ°˜μ‘ν˜•
νŠΈλžœμž­μ…˜
μ„€λͺ…

λ‘κ°œ μ΄μƒμ˜ 쿼리λ₯Ό ν•œ μž‘μ—…μœΌλ‘œ μ‹€ν–‰ν•΄μ•Ό ν•  λ•Œ μ‚¬μš©ν•˜λŠ”κ²ƒ 
νŠΈλžœμž­μ…˜μœΌλ‘œ 묢인 쿼리 쀑 ν•˜λ‚˜λΌλ„ μ‹€νŒ¨ν•˜λ©΄ 전체 μ‹€νŒ¨λ‘œ κ°„μ£Ό -> κΈ°μ‘΄μƒνƒœλ‘œ 되돌림 (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

+ Recent posts