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 가능)

 

즉 웬만한 간단한 작업 아니고서야 수동 커밋이 적합하다.