일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 오라클
- DEFAULT
- DB
- DTO
- C#접근제어자
- java
- 자바연산자
- C언어 표준 라이브러리
- 자바
- JSP
- java접근제어자
- oracle db
- Vo
- DB 제약조건
- 접근제한자
- JavaSwing
- oracle developer
- 메이븐업데이트
- break
- Oracle SQL Developer
- C#접근제한자
- o(log n)
- 데이터베이스
- sql
- DAO
- Oracle
- O(n)
- 빅오표기법
- mvc디자인패턴
- DATABASE
성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و
Transaction 본문
package database;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class J04_Transaction {
public static void main(String[] args) {
try(
Connection conn = JdbcConnection.getConnection();
) {
// 커넥션을 받아오면 (연결 인스턴스) 자동으로 오토커밋이 켜져있다.
// 해당 연결인스턴스의 자동 커밋을 비활성화해야 커밋과 롯백을 활용한 트랜잭션 관리가 가능하다
conn.setAutoCommit(false);
String sql1 = "INSERT INTO "
+ "fruits(fruit_id, fruit_name, fruit_price) "
+ "VALUES(fruit_id_seq.nextval,'Pineapple', 5000)";
try(PreparedStatement pstmt = conn.prepareStatement(sql1)){
for (int i = 0; i <5; ++i) {
pstmt.executeUpdate();
}
}
// 확률적으로 롤백이 되거나, 커밋이되도록
if((int)(Math.random() *2) ==1){
System.out.println("파인애플 5개 추가 및 커밋되었습니다.");
conn.commit();
} else {
// 롤백되더라도 시퀀스 번호는 돌아가지 않아서, 중간에 비어있는 시퀀스 번호들을 볼수 있다.
System.out.println("파인애플 5개 추가 되었다가 롤백되었습니다.");
System.out.println("롤백되더라도 시퀀스 번호는 돌아가지 않습니다...");
conn.rollback();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
'백엔드개발 > JDBC' 카테고리의 다른 글
Data Model Class (0) | 2023.11.13 |
---|---|
Meta data (1) | 2023.11.13 |
Execute Update (0) | 2023.11.13 |
Prepare Statement (0) | 2023.11.13 |
Select QUIZ / DB로부터 모든 사원의 사번/이름/부서명/직책명 읽어 파일형태로 저장하기 / (0) | 2023.11.13 |