병호의 IT새싹키우기
JDBC 트랜잭션 관리와 배치 처리 본문
1. 트랜잭션 관리(commit, rollback)
트랜잭션은 여러 SQL 문을 하나의 작업 단위로 묶어주는 것을 의미합니다. commit은 트랜잭션을 완료하여 변경사항을 저장하고, rollback은 트랜잭션을 취소하여 변경사항을 되돌립니다.
트랜잭션의 개념과 중요성
- 트랜잭션의 개념:
- 트랜잭션(Transaction)은 데이터베이스에서 하나의 논리적인 작업 단위를 의미합니다. 여러 SQL 문이 하나의 작업으로 묶여서 실행됩니다.
- 트랜잭션은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)의 특성을 갖습니다. 이를 ACID 특성이라고 합니다.
💡ACID💡
- 원자성 (Atomicity) : 원자성은 트랜잭션의 모든 작업이 성공적으로 완료되거나, 전혀 실행되지 않은 상태를 보장합니다. 트랜잭션 내의 모든 작업이 성공하면 트랜잭션이 커밋되어 데이터베이스에 적용되고, 트랜잭션 중 하나라도 실패하면 트랜잭션이 롤백되어 모든 변경 사항이 취소됩니다.(마치 은행에서 이체 작업을 할 때, 돈이 출금되었지만 입금되지 않거나, 입금되었지만 출금되지 않는 상황이 없어야 한다는 의미입니다. 둘 다 성공하거나 둘 다 실패해야 합니다.)
- 일관성 (Consistency): 일관성은 트랜잭션이 실행되기 전과 후에 데이터베이스가 일관된 상태를 유지함을 보장합니다.(은행에서 고객의 잔고가 음수가 되지 않도록 하는 규칙이 항상 지켜지는 것을 보장합니다.)
- 고립성 (Isolation): 고립성은 동시에 실행되는 트랜잭션들이 서로 간섭하지 않도록 보장합니다. 하나의 트랜잭션이 완료되기 전까지는 다른 트랜잭션이 그 트랜잭션의 중간 결과를 볼 수 없습니다.(여러 사용자가 동시에 은행 계좌를 업데이트할 때, 각 사용자가 자신의 작업이 완료되기 전까지 다른 사용자의 업데이트를 볼 수 없습니다.) 두 개의 트랜잭션이 동시에 같은 데이터를 수정할 때, 각각의 트랜잭션은 고립되어 있어야 하며, 순서에 상관없이 같은 결과를 생성해야 합니다.
- 지속성 (Durability): 지속성은 트랜잭션이 성공적으로 커밋된 후에는 시스템 장애가 발생하더라도 그 결과가 데이터베이스에 영구적으로 반영됨을 보장합니다.(은행에서 이체가 완료된 후 시스템이 갑자기 중단되더라도, 이체된 금액이 손실되지 않고 그대로 유지되는 것을 보장합니다.)
자동 커밋 모드와 수동 커밋 모드
- 자동 커밋 모드:
- 기본적으로 JDBC는 자동 커밋 모드입니다. 각 SQL 문이 실행될 때마다 자동으로 커밋됩니다.
- 설정: connection.setAutoCommit(true);
- 수동 커밋 모드:
- 수동 커밋 모드는 여러 SQL 문을 하나의 트랜잭션으로 묶어서 실행할 수 있습니다. 트랜잭션을 명시적으로 커밋하거나 롤백할 수 있습니다.
- 설정: connection.setAutoCommit(false);
- 커밋: connection.commit();
- 롤백: connection.rollback();
시나리오 코드
'java' 카테고리의 다른 글
JDBC 성능 최적화 (0) | 2024.06.27 |
---|---|
JDBC를 활용한 CRUD 와 SOLID 원칙 (0) | 2024.06.14 |
래퍼 클래스 (0) | 2024.06.12 |
JDBC 기본 사용법 (1) | 2024.06.11 |
JDBC 설치 및 설정 (0) | 2024.06.11 |