Savepoint 인터페이스는 추가적인 트랜잭션 제어를 제공합니다. 대부분의 최신 DBMS는 Oracle의 PL/SQL과 같은 환경 내에서 세이브 포인트를 지원합니다.
저장 지점을 설정할 때 트랜잭션 내에서 논리적 롤백 지점을 정의합니다. 저장 지점 이후에 오류가 발생하면 롤백 방법을 사용하여 모든 변경 사항을 취소하거나 저장 지점 이후에 이루어진 변경 사항만 취소할 수 있습니다.
연결 개체에는 저장 지점을 관리하는 데 도움이 되는 두 가지 새로운 방법이 있습니다.
-
setSavepoint(문자열 savepointName): 새 저장 지점을 정의합니다. 또한 Savepoint 개체를 반환합니다.
-
releaseSavepoint(Savepoint savepointName): 저장점을 삭제합니다. 매개변수로 Savepoint 개체가 필요합니다. 이 객체는 일반적으로 setSavepoint() 메서드에 의해 생성된 저장 지점입니다.
하나의 롤백(String savepointName)이 있습니다. 작업을 지정된 저장 지점으로 롤백하는 메서드입니다.
예시
try { //Assume a valid connection object conn conn.setAutoCommit(false); Statement stmt = conn.createStatement(); //set a Savepoint Savepoint savepoint1 = conn.setSavepoint("Savepoint1"); String SQL = "INSERT INTO Employees " + "VALUES (106, 20, 'Rita', 'Tez')"; stmt.executeUpdate(SQL); //Submit a malformed SQL statement that breaks String SQL = "INSERTED IN Employees " + "VALUES (107, 22, 'Sita', 'Tez')"; stmt.executeUpdate(SQL); // If there is no error, commit the changes. conn.commit(); } catch(SQLException se){ // If there is any error. conn.rollback(savepoint1); }