ํธ๋์ญ์
์ค๋ช
๋๊ฐ ์ด์์ ์ฟผ๋ฆฌ๋ฅผ ํ ์์
์ผ๋ก ์คํํด์ผ ํ ๋ ์ฌ์ฉํ๋๊ฒ
ํธ๋์ญ์
์ผ๋ก ๋ฌถ์ธ ์ฟผ๋ฆฌ ์ค ํ๋๋ผ๋ ์คํจํ๋ฉด ์ ์ฒด ์คํจ๋ก ๊ฐ์ฃผ -> ๊ธฐ์กด์ํ๋ก ๋๋๋ฆผ (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 |