Transactional
ํธ๋์ญ์
๋์ ๋ฐฉ์๊ณผ ๋๊ธฐํ
ํธ๋์ญ์
์ปค๋ฐ ๊ณผ์ ๋ฐ ์ฝ๋ ๋ถ์
private void processCommit(DefaultTransactionStatus status) {
try {
boolean beforeCompletionInvoked = false;
try {
prepareForCommit(status); // 1. ์ปค๋ฐ ์ค๋น
triggerBeforeCommit(status); // 2. ์ปค๋ฐ ์ ์ฝ๋ฐฑ
triggerBeforeCompletion(status); // 3. ์๋ฃ ์ง์ ์ฝ๋ฐฑ
beforeCompletionInvoked = true;
// ... ์ธ์ด๋ธํฌ์ธํธ/ํธ๋์ญ์
๋ถ๊ธฐ ์ฒ๋ฆฌ ๋ฑ
else if (status.isNewTransaction()) {
doCommit(status); // 4. DB ํธ๋์ญ์
์ปค๋ฐ (์ด ์์ ์ DB ํธ๋์ญ์
์ข
๋ฃ)
}
} catch (Exception ex) {
// ์์ธ ๋ฐ์ ์ ๋กค๋ฐฑ ๋ฐ ์์ธ ์ ํ
throw ex;
}
try {
triggerAfterCommit(status); // 5. ์ปค๋ฐ ์ดํ ์ฝ๋ฐฑ
} finally {
triggerAfterCompletion( // 6. ์๋ฃ ํ ์ฝ๋ฐฑ
status, TransactionSynchronization.STATUS_COMMITTED
);
}
} finally {
cleanupAfterCompletion(status); // 7. ํธ๋์ญ์
์ปจํ
์คํธ ์ ๋ฆฌ (๋ฆฌ์์ค ์ธ๋ฐ์ธ๋ฉ)
}
}ํธ๋์ญ์
์ฐ์ ์์
์๊ธฐ ํธ์ถ(Self Invocation)
์ด๊ธฐํ ์์
ํธ๋์ญ์
์ต์
1. rollbackFor / noRollbackFor
2. isolation
3. timeout
4. readOnly
5. propagation
์ต์
์ค๋ช
๊ธฐ์กด ํธ๋์ญ์
X
๊ธฐ์กด ํธ๋์ญ์
O
ํธ๋์ญ์
์ ํ ํ๋ฆ - REQUIRED ์ต์

๋ด๋ถ ํธ๋์ญ์
์คํจ๋ก ์ธ๋ถ ํธ๋์ญ์
์ด ๋กค๋ฐฑ๋๋ ์์
Last updated