Java 거래의 간단한 사용
Java 업무는 일부 인터뷰에서 요청됩니다.
인터뷰 중에 우리가 대답해야 할 첫 번째는 다음과 같습니다. 거래는 데이터의 무결성과 일관성을 보장 할 수 있습니다.
기술이 더 깊어지면 : 일부 원칙에 대해 이야기하십시오 (작업이 시작되기 전에 작업을 제출하지 말고 모든 작업이 완료된 후 작업을 제출하십시오.
작업이 중간에 연결이 끊어지면 롤백이 수행되고 이전 작업이 취소됩니다). 간단한 예제 (예 : 돈을 저축 및 인출 문제와 같은 예제가 제공됩니다.
예를 들어, 은행은 두 계정 사이에서 돈을 송금하는데, 계정 A에서 계정 B로 1,000 위안에 대한 양도. 이 시스템은 먼저 계정 A를 1,000 위안으로 줄인 다음 계정 B에 1,000 위안을 추가합니다. 모든 실행이 성공하면 데이터베이스는 일관성이 있습니다. 계정 B의 양을 늘리지 않고 계정 A 양의 수정 만 완료되면 데이터베이스는 일관되지 않은 상태이며 이전 작업을 취소해야합니다. )
이 기사에서는 Java 거래에 대해 간단히 설명합니다. Java 거래에 대해 물어 보면 이것이 데이터베이스와 관련이 있음을 알아야합니다.
하나. 먼저 간단한 코드를 살펴 보겠습니다
JDBC를 사용하여 거래 처리를 수행하십시오
public int delete (int sid) {// 데이터베이스 연결 DatabaseConnection dbc = new DatabaseConnection ()을 구현하는 클래스; // 연결 객체 연결을 가져옵니다. 연결 CON = DBC.GETCONNECTION (); try {con.setautocommit (false); // jdbc 트랜잭션의 기본 커밋 방법을 변경하십시오 dbc.executeupdate ( "xiao에서 삭제 된 id =" + sid); dbc.executeUpdate ( "xiao_content에서 삭제 된 id =" + sid); dbc.executeUpdate ( "bylawid =" + sid where xiao_affix에서 삭제); con.commit (); // Commit JDBC Transaction Con.setAutoCommit (true); // JDBC 트랜잭션 DBC.CLOSE ()의 기본 커밋 방법을 복원합니다. 반환 1; } catch (Exception Exc) {con.rollback (); // rolle back jdbc transaction dbc.close (); 반품 -1; }} 위의 코드는 Java 트랜잭션의 간단한 실행입니다.
위의 3 회 삭제 작업이 수행됩니다. 실패하는 한 작업이 롤백되며, 이는 함께 성공하거나 아무것도 수행되지 않습니다.
트랜잭션 관리가 없으면 이전 실행이 데이터베이스에서 즉시 업데이트됩니다.
실행이 실패 할 때마다 후속 작업을 종료하고 데이터의 일관성을 보장 할 수 없습니다.
둘. Java 거래의 기본 개념
원자력 : 거래는 완전한 운영입니다. 거래의 운영은 분리 할 수 없다 (원자).
그것들을 실행하거나 아무것도 실행하지 않습니다
일관성 : 트랜잭션이 완료되면 데이터는 일관된 상태 여야합니다.
격리 : 데이터를 수정하는 모든 동시 트랜잭션은 서로 격리되어 있습니다. 즉, 트랜잭션이 독립적이어야합니다.
어떤 식 으로든 다른 트랜잭션에 의존하거나 영향을 미치지 않아야합니다 (내구성) : 트랜잭션이 완료된 후에는 데이터베이스에 대한 수정이 영구적으로 유지되며 트랜잭션 로그는 트랜잭션의 영구성을 유지할 수 있습니다.
Java Transaction Processing 설명 : 데이터베이스에서 여러 작업을 수행하는 경우 각 실행 또는 단계는 트랜잭션입니다.
특정 단계에서 데이터베이스 작업이 실행되지 않거나 예외가 발생하면 트랜잭션 실패가 발생하므로 일부 트랜잭션이 실행되고 일부는 실행되지 않습니다.
이것은 거래 롤백으로 이어지고 이전 작업을 취소합니다 ...
데이터베이스 작업에서 트랜잭션은 데이터베이스를 업데이트하는 하나 이상의 SQL 문으로 구성된 분리 할 수없는 작업 단위를 나타냅니다.
트랜잭션의 모든 운영이 정상적으로 완료된 경우에만 전체 트랜잭션을 데이터베이스에 제출할 수 있습니다. 작업이 완료되지 않은 경우
전체 거래는 취소되어야합니다.
예를 들어, 은행 양도 거래에서 Zhang San이 자신의 계정에서 Li Si의 계정으로 1,000 위안을 전송한다고 가정하면 관련 SQL 문은 다음과 같습니다.
업데이트 계정 설정 Money = Monery-1000, 여기서 name = 'Zhangsan'
계정 설정 money = monery+1000 여기서 name = 'lisi'
이 두 문장은 완료된 거래로 처리되어야합니다. 이 거래는 둘 다 성공적으로 실행 된 경우에만 제출할 수 있습니다.
한 문장이 실패하면 전체 거래가 취소되어야합니다.
연결 클래스에서 트랜잭션을 제어하는 3 가지 방법이 있습니다.
(1) setAutocommit (부울 autocommit) : 거래를 자동으로 제출할지 여부를 설정합니다.
(2) Commit (); 저지르다(); 거래 거래;
(3) 롤백 (); 거래를 취소;
JDBC API에서 기본 사례는 트랜잭션을 자동으로 커밋하는 것입니다. 즉, 데이터베이스에 대한 각 업데이트는 트랜잭션을 나타냅니다.
작업이 성공하면 시스템은 Commit ()를 자동으로 호출하여 Commit를 사용합니다. 그렇지 않으면 Rollback ()가 트랜잭션을 취소하기 위해 호출됩니다.
JDBC API에서 SetAutoCommit (False)를 호출하여 자동 거래 제출을 금지 할 수 있습니다.
그런 다음 데이터베이스를 트랜잭션으로 업데이트하는 여러 SQL 문을 사용할 수 있습니다. 모든 작업이 완료된 후에는 Commit ()가 호출되어 전체 제출을 수행합니다.
SQL 작업 중 하나가 실패하면 Commit () 메소드가 실행되지 않지만 해당 SQLexection이 생성됩니다.
현재 코드 블록에서 예외를 포착 할 수 있습니다. Rollback () 메소드를 호출하여 트랜잭션을 취소하십시오.
일반적으로 데이터베이스 개발을 전문으로하는 개발자는 거래에 대한 깊은 이해를 가져야합니다.
그러나 평균 프로그래머는 이와 관련하여 많은 시간을 소비 할 필요가 없습니다. 일반적인 효과를 이해하십시오.
읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!