사무
트랜잭션은 작동 시퀀스 1 단계 또는 여러 단계로 구성된 논리적 실행 장치입니다. 트랜잭션의 네 가지 특성 : 원자력, 일관성, 등 화 및 내구성 원자력 : 트랜잭션 애플리케이션의 가장 작은 실행 단위는 나눌 수 없습니다. 더 이상 업무로 나뉘 지 않는 것은 최소 논리 실행 기관입니다.
일관성 : 트랜잭션 실행 결과는 데이터베이스를 하나의 일관성에서 다른 상태로 만들어야합니다.
ISOITIES : 각 거래의 실행은 방해되지 않으며 다른 거래의 내부 운영은 다른 동시 거래에 대해 격리됩니다. 즉, 상대방의 중간 상태는 동시 실행의 거래 사이에서 볼 수 없으며 동시 실행의 업무는 서로 영향을받을 수 없습니다.
내구성 : 연속성은 또한 트랜잭션이 제출되면 데이터의 변경 사항을 나타냅니다.
일반적인 데이터베이스와 관련된 문장은 다음과 같습니다. DML 세트 (Data Munipuration 언어, 데이터 운영 언어) 문서,이 DML 문은 수정, 수정, 삭제 삭제와 같은 작동 테이블 문의 우수한 일관성을 유지합니다. DDL (데이터 정의 언어, 데이터 정의 언어) 문, 데이터 객체의 언어는 생성, 변경, drop. 데이터 제어 언어, 데이터 제어 언어) 문, 주로 보조금 및 취소 명세서. DDL 및 DCL 명세서는 즉시 거래를 제출하기 때문에 최대 만 사용할 수 있습니다. 사무실에 포함 된 모든 데이터베이스 운영이 성공적으로 구현되면 이러한 수정을 영구적으로 효과적으로 수행하기 위해 트랜잭션을 제출해야합니다. 거래 제출에는 두 가지 방법이 있습니다 : 디스플레이 제출 및 자동 제출. 디스플레이 제출 : COMMINT를 사용하여 자동 제출 : DLL 또는 DCL 실행 또는 트랜잭션에 포함 된 모든 데이터베이스의 데이터베이스 실행에서 프로그램이 철회되므로 트랜잭션의 모든 수정이 실패하도록 다시 롤백해야합니다. 트랜잭션을 롤하는 방법에는 두 가지가 있습니다 : 디스플레이 롤백 및 자동 롤백. 롤백 표시 : 롤백을 사용하여 자동으로 롤링 : 시스템 오류 또는 강제 종료.
거래 동시 처리의 가능한 문제
1. Dirty Read : 한 트랜잭션은 다른 거래에서 제출되지 않은 데이터를 읽습니다.
2. 비관식 읽기 읽기 : 한 트랜잭션의 운영으로 인해 다른 데이터가 다른 데이터를 두 번 읽게합니다.
3. Phantom Read : 한 트랜잭션의 운영은 두 쿼리 결과의 결과 결과로 이어집니다.
예:
트랜잭션 a와 b 실행 중에 :
Java JDBC 트랜잭션 메커니즘
Java.sql.sql.sql.sql.preparedstatement; 최종 문자열 "루트"; String querysql = "query sql"; "com.mysql.jdbc.driver"; PSTMTUPDATE의 업데이트 ); } 마침내 {try {if (pstmtupdate! = null) {pstmtupdate.close ();} if (pstmtqury! = null) {pstmtqury.close ();} if (con! = null) {conn.cl OSE (OSE) ;}} catch (sqlexception e2) {}}}}}
JDBC의 업무 지원
JDBC의 연결은 또한 기본적으로 자동 제출을 엽니 다. 다시 말해, 각 SQL 문의 실행은 즉시 데이터베이스에 제출되며, 이는 영구적으로 효과적이며 작동 할 수 없습니다. 연결의 자동 제출을 닫고 사물을 시작하십시오. 연결의 SetAutoCommit 방법은 다음과 같습니다. Connection.getAutocommit ()를 통한 Connection.SetAutoCommit (false); 물건을 켜면 현재 연결에서 완료된 데이터베이스 작업은 즉시 데이터베이스에 제출되지 않으며 커밋 연결 방법을 호출해야합니다. 명세서 실패가 있으면 롤백을 앞뒤로 호출 할 수 있습니다. 참고 : 연결이 처리되지 않은 Sqlexception 이상이 발생하면 시스템이 비정상적으로 종료되고 시스템은 자동으로 트랜잭션을 롤백합니다. 프로그램이 이러한 이상을 포착하는 경우 비정상적인 치료에서 롤백 트랜잭션을 표시해야합니다. 연결은 트랜잭션 중간에 저장 지점을 설정하는 방법을 제공합니다. SetSavePoint는 중간 점을 설정하는 두 가지 방법이 있습니다. 가리키다. SavePoint SetSavePoint (String Name) : 현재 트랜잭션에서 지정된 이름을 가진 중간 점을 작성하고 일반적으로 SetSavePoint (String Name)는 롤백의 이름을 설정합니다 미들 포인트 객체에 따르면. 설정 이름은 Middle Point 객체를 사용하여 지정된 중간 점으로의 롤백을 완료합니다.
JDBC의 거래 지원은 세 가지 측면에 반영됩니다.
1. 자동 컴포지트 모드
연결은 트랜잭션이 끝날 때 지정할 수있는 자동 커밋 속성을 제공합니다.
2. 자동 커밋이 참이면, 각 독립 SQL 작업의 실행이 완료되면 트랜잭션이 즉시 제출되므로 각 SQL 작업이 트랜잭션임을 의미합니다.
독립적 인 SQL 작동이 계산 된 경우 JDBC 사양은 다음과 같이 정의됩니다.
데이터 작동 언어 (DML) 및 데이터 정의 언어 (DDL) 용 문장이 실행 되 자마자
3. Auto-Commit이 False 인 경우 각 트랜잭션에는 제출할 호출 방법을 표시하거나 콜백 메소드가 표시되어 롤백으로 표시됩니다. 자동 커밋 기본값
거래 수준
JDBC는 5 개의 거래 수준을 정의합니다.
저축 지점
JDBC는 SavePoint 인터페이스를 정의하고보다 미세한 트랜잭션 제어 메커니즘을 제공합니다. 저장 지점이 설정되면 롤백의 전체 트랜잭션이 아닌 저장 지점에서 상태로 롤백 할 수 있습니다. 이 정보는 단순한 비즈니스 인 것 같습니다.이 비즈니스는 달성하기가 매우 쉽습니다 문의를 수행하기 전에 수정 명세서를 실행하여 문의를 실행하며 수정 한 정보와 다를 수 있습니다. 이 문제를 해결하려면 JDBC 트랜잭션 메커니즘을 소개해야합니다.