๋ฐ˜์‘ํ˜•
ํŠธ๋žœ์žญ์…˜
์„ค๋ช…

๋‘๊ฐœ ์ด์ƒ์˜ ์ฟผ๋ฆฌ๋ฅผ ํ•œ ์ž‘์—…์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ 
ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ์ธ ์ฟผ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๋ฉด ์ „์ฒด ์‹คํŒจ๋กœ ๊ฐ„์ฃผ -> ๊ธฐ์กด์ƒํƒœ๋กœ ๋˜๋Œ๋ฆผ (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 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ
(์ฑ…) ์Šคํ”„๋ง ์ฒ ์ € ์ž…๋ฌธ 

๋ฐ˜์‘ํ˜•

+ Recent posts