
ํธ๋์ญ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด์ฑ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
START TRANSACTION : ํธ๋์ญ์
์์ํฉ๋๋ค.COMMIT : ํธ๋์ญ์
๋ด์ ๋ชจ๋ ์์
์ ์๊ตฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉํ๊ณ ํธ๋์ญ์
์ด ์ข
๋ฃ๋ฉ๋๋ค.ROLLBACK : ํธ๋์ญ์
๋ด์ ๋ชจ๋ ์์
์ทจ์ํ๊ณ ํธ๋์ญ์
์ข
๋ฃ ํ ์ด์ ์ํ๋ก ๋์๊ฐ๋๋ค.SAVEPOINT : ํธ๋์ญ์
๋ด์ ํน์ ์ง์ ์ ์ ์ฅ์ ์ ์ค์ ํฉ๋๋ค. ์ดํ ๋กค๋ฐฑํ ๋ ํด๋น ์ ์ฅ์ ๊น์ง ๋กค๋ฐฑํ ์ ์์ต๋๋ค.UPDATE bank
SET money = money - 500
WHERE name = '๊ฐ์ธ';
UPDATE bank
SET money = money + 500
WHERE name = 'ํฅ๋ฏผ';
/*Transaction ์์*/
START TRANSACTION;
COMMIT; #๋ชจ๋ ์ฑ๊ณต(๋ฐ์)
START TRANSACTION;
ROLLBACK ; # ๋ชจ๋ ์คํจ(๋ฐ์ํ์ง ์์, ํธ๋์ญ์
์์ ์ ์ผ๋ก ๋๋ฆผ)
๋ฉ์๋๊ฐ ์คํ๋ ๋ ํธ๋์ญ์ ์ ์์ํ๊ณ ์ ์์ ์ผ๋ก ์๋ฃ๋ ๊ฒฝ์ฐ ์ปค๋ฐํ๊ณ ์์ธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋กค๋ฐฑํ๋ ์ญํ ์ ํฉ๋๋ค.
@Transactional(rollbackFor = Exception.class) #์์ธ ํด๋์ค ๋ช
์์ ์ง์
RuntimeException๊ณผ ๊ทธ ํ์ ํด๋์ค๋ค์ ๋ํด์๋ง ๋กค๋ฐฑ์ ์ํํฉ๋๋ค.Exception.class์ ์ง์ ํจ์ผ๋ก์จ ๋ชจ๋ ์์ธ์ ๋ํ ๋กค๋ฐฑ์ ์ํํฉ๋๋ค.@Service
@RequiredArgsConstructor
@Transactional(rollbackFor = Exception.class)
public class Service03 {
private final Mapper07 mapper;
....
}