English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JDBC 연결이 자동 커밋 모드(기본적으로 자동 커밋 모드로 설정됨)에 있으면, 각 SQL 문이 완료될 때마다 데이터베이스에 커밋됩니다. 이는 간단한 애플리케이션에서는 좋을 수 있지만, 다음 세 가지 이유로 자동 커밋을 끄고 자신의 트랜잭션을 관리하고 싶을 수 있습니다.-
성능을 향상시키기 위해
비즈니스 프로세스의 통일성을 유지합니다。
분산 트랜잭션을 사용하여
트랜잭션은 데이터베이스에 변경 사항을 적용하는 것을 제어할 수 있습니다. 단일 SQL 문장이나 SQL 문장 그룹을 논리적 단위로 간주하며, 어떤 문장이 실패하면 전체 트랜잭션이 실패합니다。
자동 커밋을 사용하는 대신 수동 트랜잭션 지원을 활성화하려면자동 커밋모드를 설정하려면, Connection 객체의setAutoCommit()메서드. setAutoCommit( )에 불리언 값 false를 전달하면 자동 커밋 기능을 끌 수 있습니다. 다시 열려기 위해 불리언 값 true를 전달할 수 있습니다。
예를 들어, conn이라는 Connection 객체가 있다면, 자동 커밋을 끄는 다음 코드를 작성하십시오-
conn.setAutoCommit(false);
변경 사항을 완료하고 변경 사항을 커밋하려면연결 객체에 메서드를 호출하여commit()،如下所示:
conn.commit( );
다른 경우, conn 명칭의 Connection에 대한 데이터베이스 업데이트를 롤백하려면 다음 코드를 사용하십시오-
conn.rollback( );
아래 예제는 커밋과 롤백 객체의 사용법을 설명합니다-
try{ //conn이有效的 연결 객체라고 가정합니다 conn.setAutoCommit(false); Statement stmt = conn.createStatement(); String SQL = "INSERT INTO Employees " + "VALUES (106, 20, 'Rita', 'Tez')"; stmt.executeUpdate(SQL); //폼식이 잘못된 SQL 문장을 제출하면 중단됩니다. String SQL = "INSERTED IN Employees " + "VALUES (107, 22, 'Sita', 'Singh')"; stmt.executeUpdate(SQL); // 에러가 없으면。 conn.commit(); }catch(SQLException se){ // 에러가 발생하면. conn.rollback(); }
이 경우, 위의 INSERT 문은 모두 성공하지 않으며 모든 내용이 롤백됩니다.
다시 이해하기 위해, "commit 예제 코드。
새로운 JDBC 3.0 Savepoint 인터페이스는 다른 트랜잭션 제어를 제공합니다. 대부분의 현대 DBMS는 그 환경에서 저장점을 지원합니다. 예를 들어, Oracle의 PL / SQL。
저장점을 설정할 때, 트랜잭션에서 논리적 롤백 포인트를 정의할 수 있습니다. 저장점 이후에 오류가 발생하면, 모든 변경 사항을 취소하거나 저장점 이후에 수행된 변경 사항만 취소할 수 있습니다。
Connection 객체는 저장점을 관리하는 데 도움이 되는 두 가지 새로운 메서드를 가집니다。-
setSavepoint(String savepointName):새로운 저장점을 정의합니다. 또한 Savepoint 객체를 반환합니다。
releaseSavepoint(Savepoint savepointName):저장점을 제거하세요.请注意,它需要一个Savepoint对象作为参数。该对象通常是由setSavepoint()方法生成的保存点。
rollback (String savepointName)메서드는 작업을 지정된 저장점으로 롤백할 수 있습니다.
다음 예제는 Savepoint 객체의 사용법을 설명합니다-
try{ //conn이有效的 연결 객체라고 가정합니다 conn.setAutoCommit(false); Statement stmt = conn.createStatement(); //저장점을 설정합니다 Savepoint savepoint1 = conn.setSavepoint("Savepoint1); String SQL = "INSERT INTO Employees" + "VALUES (106, 20, 'Rita', 'Tez')"; stmt.executeUpdate(SQL); //폼식이 잘못된 SQL 문장을 제출하면 중단됩니다. String SQL = "INSERTED IN Employees" + "VALUES (107, 22, 'Sita', 'Tez')"; stmt.executeUpdate(SQL); // 에러가 없으면 변경 사항을提交하세요. conn.commit(); }catch(SQLException se){ // 에러가 발생하면. conn.rollback(savepoint1); }
이 경우, 위의 INSERT 문은 모두 성공하지 않으며 모든 내용이 롤백됩니다.
이해하기 위해, 다음을 연구해 보겠습니다Savepoints-예제 코드。