### commit이란?

commit은 DB에 영구적으로 저장하는 것을 말한다.
commit을 실행하지 않으면 실행창(브라우저나 sqlDeveloper등)을 껐다 키게 되면

실행한 쿼리문이 적용되기 전 상태에 머물러있게 된다.

 

### 트렌젝션이란?

이전에 기존 프로젝트들에서는 쿼리 별로 기능을 분류했다면

트랜젝션은 (여러 개의 쿼리 사용하는) 작업들을 기능 별로 나눈 것을 말한다.


스프링에서 mybatis를 사용하는 방법에 대해 배우는 과정에서

 Mybatis는 트렌젝션 기능을 가지고 있기 때문에 select는 Database의 변화가 없어 괜찮지만
 insert, update, delete는 commit 시켜줘야 session의 정보가 table에 반영이 된다.

라는 사실을 알게 되었다.

 

즉, DAO에서 commit을 해주지 않으면 웹브라우저에서는 변동 사항을 확인 할 수 있지만

DB에는 반영이 되지 않는다는 것이다.

 

 

JDBC를 관리하는 xml 파일에서 아래와 같은 코드를 작성하게 되면 autocommit 기능이 꺼지게 되고

직접 commit을 작성해주어야 한다.

<transactionManager type="JDBC" />

 

그럼 위의 코드를 작성하지 않고 자동으로 커밋 되는 게 더 편리하지 않냐고 묻는다면
커밋은 주로 트렌젝션 단위로 실행하기 때문에 자동 커밋을 실행하는 것을 추천하지 않는다.

 

커밋은 트렌젝션 단위 별로 실행!
롤백: 트랜젝션 수행 전으로 돌아가는 것

+ Recent posts