[데이터베이스] Ch5. SQL 고급 1 - JDBC의 트랜잭션 제어, 기타 JDBC 기능, ODBC, 내장 SQL

김규원·2024년 1월 11일
post-thumbnail

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에 비해 빠르고 효율적임.
profile
행복한 하루 보내세요

0개의 댓글