java 트랜잭션 예제

트랜잭션을 사용하면 변경 내용이 데이터베이스에 적용되는지 및 수행할 수 있습니다. 단일 SQL 문 또는 SQL 문 그룹을 하나의 논리 단위로 처리하고 명령문이 실패하면 전체 트랜잭션이 실패합니다. 샘플 응용 프로그램은 은행 응용 프로그램의 매우 간단한 백 엔드 서비스입니다. 우리는 두 개의 서로 다른 데이터베이스를 사용하여 BankAccountService 및 AuditService의 두 가지 서비스가 있습니다. 이러한 독립적인 데이터베이스는 트랜잭션 시작, 커밋 또는 롤백 시 조정되어야 합니다. 커밋()과 롤백()은 모두 현재 트랜잭션을 종료한다는 점에 유의해야 합니다. MySQL 데이터베이스에 연결하면 자동 커밋 모드가 기본적으로 true로 설정됩니다. 즉 문이 성공적으로 실행되면 변경 내용이 데이터베이스에 적용됩니다. 트랜잭션을 커밋할 시기를 제어하려는 경우 연결 개체의 setAutoCommit() 메서드를 다음과 같이 호출합니다. Savepoint 인수를 위해 Connection.rollback 메서드가 오버로드됩니다. 일반적으로 JTA로 알려진 Java 트랜잭션 API는 Java에서 트랜잭션을 관리하는 API입니다. 이를 통해 리소스에 구애받지 않는 방식으로 트랜잭션을 시작, 커밋 및 롤백할 수 있습니다. 참고: JDBC 드라이버가 모든 트랜잭션 격리 수준을 지원하지 않을 수 있습니다.

드라이버가 setTransactionIsolation 호출에 지정된 격리 수준을 지원하지 않는 경우 드라이버는 더 높고 보다 제한적인 트랜잭션 격리 수준을 대체할 수 있습니다. 드라이버가 더 높은 트랜잭션 수준을 대체할 수 없는 경우 SQLException을 throw합니다. 데이터베이스메타Data.supports트랜잭션격리 수준 메서드를 사용하여 드라이버가 지정된 수준을 지원하는지 여부를 결정합니다. 일반적으로 트랜잭션 격리 수준에 대해 아무 것도 할 필요가 없습니다. DBMS에 기본 기본 값을 사용할 수 있습니다. 기본 트랜잭션 격리 수준은 DBMS에 따라 다릅니다. 예를 들어 Java DB의 경우 트랜잭션_READ_COMMITTED입니다. JDBC를 사용하면 DBMS가 설정된 트랜잭션 격리 수준(연결 메서드 getTransactionIsolation 사용)을 확인할 수 있으며 연결 메서드 집합트랜잭션 격리를 사용하여 다른 수준으로 설정할 수도 있습니다. 내구성은 트랜잭션이 커밋되면 오류, 정전 등의 경우에도 그렇게 유지됩니다. 트랜잭션 중간에 오류가 발생하는 경우 항상 rollback() 메서드를 사용하여 트랜잭션을 롤백할 수 있습니다. 이 예제에서는 후보 테이블에 새 레코드를 삽입하고 새로 삽입된 후보자에게 몇 가지 기술을 할당합니다. 격리를 사용하면 트랜잭션이 다른 트랜잭션과 격리됩니다.

명령문 con.setAutoCommit(true); 자동 커밋 모드를 활성화하면 각 문이 완료되면 다시 자동으로 커밋됩니다.

Die Kommentarfunktion ist geschlossen.