데이터베이스 작업을 할때, 트랜잭션을 일반적으로 넣는다. 왜냐하면 데이터 변경시에 예외가 발생하면, 이전의 작업을 되돌려 일관성을 유지하기 위해서이다.
그렇다면 Update, Delete, Insert와 같이 데이터베이스의 값을 변경하는 작업에는 사용하는데
SELECT문에서는 사용하나?
결론적으로는 거의 사용하지 않는다.
- SELECT문에서 예외가 발생하기가 매우 드물다. 보통 try catch를 통해 감싸는데 이때 예외처리가 되어서 catch에 들어와도, 쿼리가 잘못되었거나, 데이터베이스 서버 연결문제가 대부분이기 떄문이다.
- SELECT자체가 데이터에 변화를 주지 않는다. 단순 검색이기 때문에 설령 예외가 일어난다 해도 데이터베이스에 영향이없다.
하지만! 만약 다른 작업과 함꼐 하나의 트랜잭션으로 묶여 있는 경우라면 그때는 롤백 처리를 해주어야한다. 트랜잭션은 한번 시작하고 커밋되기 전까지 하나로 이어지기 때문에 하나의 예외가 발생하면 이전 상태로 롤백 해주어야한다!