JDBC의 트랜잭션 제어
- PostgreSQL에서 SQL 구문은 자동으로 실행되지 않는다. → 별개의 트랜잭션으로 처리
e.g) Connection 객체의 메서드
conn.setAutoCommit(false);
conn.setAutoCommit(true);
- 자동 커밋이 꺼진 상태(false) 일 때는, 명시적으로 커밋 or 롤백 해야 함.
conn.commit();
conn.rollback();
기타 JDBC 기능
큰 개체 유형 처리
- getString(), getInt() 메서드는 각각 문자열(String)과 정수(Int)를 반환한다.
- 각 용도가 있는 것처럼, 큰 개체 유형을 처리하는 것에는 Blob, Clob 유형의 객체가 사용된다.
- getBlob() : Blob 객체를 반환
- getClob() : Clob 객체를 반환
- 이 객체는 대형 객체 전체를 저장하지 않는다.
- C언어의 포인터처럼 객체의 위치자(locator)를 저장한다.
- getBytes() 나 getSubString() 과 같은 메서드를 사용하여 위 객체에서 데이터를 가져온다.
- PreparedStatment(준비된 구문) 클래스는 setBlob() 메서드를 이용 → blob 타입 데이터베이스를 입력 스트림에 연결할 수 있음.
ODBC
Open DataBase Connectivity
- ODBC 가 JDBC 이전 표준으로 만들어졌음.
- C, C++ 언어에서 데이터베이스 시스템에 접속하여 SQL 문을 실행하기 위해 사용하는 표준 응용 프로그램 인터페이스
- 응용프로그램 인터페이스(API) 다음의 기능을 지원
1. 데이터베이스와 접속을 열기
2. 질의와 갱신을 보내기
3. 결과를 얻기
- GUI, 통계 패키지, 스프레드시트와 같은 응용프로그램은 ODBC를 지원하는 어떤 데이터베이스 서버와도 동일한 ODBC API 이용 접속 가능.
ODBC VS JDBC

내장 SQL
- SQL 쿼리가 내장된 언어를 호스트(host) 언어라고 함.
- 호스트 언어에 대해 허용되는 SQL 구조는
-> 내장 SQL로 구성
- EXEC SQL 명령문 은 호스트 언어에서 전처리기에 대한 Embedded SQL 요청을 식별하는 데 사용
- EXEC SQL < embedded SQL statment >;
- COBOL 과 같은 언어에서는 세미콜론이 END-EXEC로 대체
- Java에서 임베딩은 # SQL {...};
- 내장 SQL에서는 전처리기가 해당 EXEC SQL 명령문을 호스트 언어로 된 선언과 프로시저 호출로 변환 뒤 컴파일함
- 내장 SQL = 정적 SQL
- 동적 SQL 은 실행 시에 SQL 문이 생성되므로 - 사용자의 입력 값을 받아 SQL 문의 일부로 사용하는 방법이 가능하다. 그러나 추가시간(비용)이 발생할 수 있음.
- 내장 SQL은 컴파일 시간에 미리 결정되고 최적화되어 실행 계획이 준비되므로 동적 SQL에 비해 빠르고 효율적임.