원자성
: 트랜잭션 중간에 문제가 생기면 어떤 작업도 수행되서는 안되며, 아무런 문제가 발생하지 않았을 때만 모든 작업 수행
일관성
: 트랜잭션이 완료된 다음의 상태에서도 트랜잭션이 일어나기 전 상황과 동일하게 데이터의 일관성을 보장해야 한다.
고립성
: 각각의 트랜잭션은 서로 간섭 없이 독립적으로 수행되어야 한다.
영속성
: 트랜잭션이 정상적으로 종료된 다음에는 영구적으로 데이터베이스에 작업 결과가 저장되어야 한다.
Active
: 트랜잭션의 활동 상태, 트랜잭션이 실행중이며 동작중인 상태
Failed
: 트랜잭션 실패 상태. 트랜잭션이 더이상 정상적으로 진행할 수 없는 상태
Partially Committed
: 트랜잭션의 Commit 명령이 도착한 상태. 트랜잭션의 commit 이전 sql 문이 수행되고 최종적으로 commit만 남은 상태
Committed
: 트랜잭션 완료 상태, 작업이 DB에 최종 적용된 상태
Statement
String name = "홍길동";
String memo = "메모 테스트 입니다. 홍길동's 메모장";
String priority = "1";
String sql = String.format("insert into tblMemo values(memoSeq.nextval,'%s','%s',default,%s)", name, memo, priority);
PreparedStatement
sql = "insert into tblMemo values(memoSeq.nextval,?,?,default,?)";
pstat = conn.prepareStatement(sql);
//매개변수 값 대입 + 매개변수 유효화 처리.
pstat.setString(1, name);
pstat.setString(2, memo);
pstat.setString(3, priority);
[Java] PreparedStatement를 사용해야 하는 이유Key-Value 모델
Document Model
Column Model