ChatGPT를 사용해서 얻은 결론을 요약하였습니다.
트랜잭션 처리를 하기 위해 connection의 autocommit=false를 해야 할 때가 있습니다.
Connection Pool에 있는 connection의 autocommit 상태는 해당 connection을 가져올 때 설정 된 상태를 유지합니다. 즉 Connection Pool에서 connection을 가져올 때 connection의 autocommit 상태를 설정하고, 그 상태를 유지합니다.
그래서 connection을 반환하기 전에 다시 원래 상태로 복원하지 않으면, 해당 connection을 재사용하는 다른 부분에서 예기치 않은 동작이 발생할 수 있습니다.
autocommit 설정을 원래 상태로 복원해야 하는 시점은 'connection.close()' 메서드를 호출하기 전에 해야합니다. autocommit 설정을 'connection.close()' 메서드 호출 이후에 변경하면 해당 커넥션은 이미 닫혔으므로 설정을 변경할 수 없습니다.
다시말해 connection을 사용한 후 데이터베이스 작업을 완료하고 'connection.close()'를 호출하기 전에 autocommit 설정을 원래 상태로 복원해야 합니다. 이렇게 하면 connection을 닫을 때 설정이 제대로 복원되어 다음 사용자에게 영향을 미치지 않게 됩니다.
connection.setAutoCommit(false);
//데이터베이스 작업
//...
connection.commit();
connection.setAutoCommit(true);
connection.close();