java_spring (2024.05 ~ 2024.10)
session 자동/수동 커밋
qordpsem
2024. 8. 7. 18:04
# 자동, 수동 커밋 차이
*수동 커밋
public static int update (GoodsVO g) {
int re = -1;
SqlSession session = sqlSessionFactory.openSession();
re = session.update("goods.update", g);
session.commit();
session.close();
return re;
}
*자동 커밋
public static int update(BoardVO b) {
int re = -1;
SqlSession session = factory.openSession(true);
re = session.update("board.update", b);
// session.commit();
session.close();
return re;
}
자동 커밋이 더 간단하지만,
트랜잭션 관리를 위해서는 수동 커밋이 더 적합하다.
강사님께서 계좌이체를 예로 들어주셨는데 A가 B에게 1000원 계좌이체하는 한번의 트랜잭션에서
1. A 계좌에 -1000원
2. B 계좌에 +1000원
이렇게 두번의 sql이 사용된다.
이런경우 두번 다 잘 실행됐는지 논리검증 후 commit 을 해줘야 안전하다.
(실패했을 경우 rollback 가능)
즉 웬만한 간단한 작업 아니고서야 수동 커밋이 적합하다.