JDBC2

man soup·2020년 7월 17일
0

자바 문법

목록 보기
11/15

A Relational Database Overview

  • 데이터베이스는 정보를 검색 할 수 있는 방식으로 정보를 저장하는 수단이다.
  • 간단하게 관계형 데이터베이스는 정보를 행과 열로 된 테이블형식으로 보여주는 것을 말한다.
  • 테이블은 동일한 유형의 객체 콜렉션이라는 의미에서 관계라고한다.
  • 테이블의 데이터는 공통의 키또는 개념과 관련있을 수 있고 관련된 데이터를 테이블로 부터 얻는 기능은 관계형 데이터베이스 용어의 기초이다.
  • Database Management System은 데이터가 저장, 유지, 얻는 방식을 조종한다.
  • 관계형데이터베이스에서 RDBMS는 이러한 일들을 처리한다.

Integrity Rules (무결성 규칙)

  • 관계형 테이블은 특정 무결성 규칙에 따라 포함 된 데이터가 정확하고 항상 액세스 할 수 있도록 한다.
  • 첫번째 무결성 규칙 : 관계형 테이블에서 행은 중복될 수 없다.
    • 만약 중복된 행이 존재한다면 가능한 selection 중 무엇이 옳바른 선택인지 알 수 없는 문제가 발생한다.
  • 두번째 무결성 규칙 : 열의 값은 반복되는 그룹 또는 배열이 아니여야 한다.
  • 세번째 무결성 규칙은 Null 값과 관련 있다.
    • 데이터베이스는 널값을 사용하여 값이 누락되었음을 표시하여 데이터를 사용할 수없는 상황을 처리합니다
    • 공백 또는 0과 같지 않다.
    • 공백은 다른 공백과 같다고 여겨지고 0은 다른 0과 같다고 여겨지지만 두개의 널값은 같다고 여겨지지 않는다.
  • 테이블에서 각 행이 다르면 하나 이상의 열을 사용해 특정 행을 구별할 수 있다.
  • 이 특정 열 또는 열 그룹은 primary key라고 불린다.
  • 기본키의 부분인 열은 널일 수 없다.
    • 널이라면 기본 키가 완벽하게 특정지을 수 있는 identifier가 될 수 없기 때문
    • 이 규칙은 entity 무결성이라고 한다.

Result Sets and Cursors

  • 쿼리를 만족하는 행을 result set이라고 부른다.
  • 결과로 돌아는 행의 수는 0개 이상일 수 있다.
  • 유저는 하나번에 하나의 result set에 접근해 데이터를 얻을 수 있는데 이때 cursor가 방법을 제공한다.
  • 커서는 결과 셋의 행들을 포함하고 있는 파일안의 포인터라고 생각할 수 있다.
  • 포인터는 어떤 행이 최근에 접근됐는지 추적할 수 있다.
  • 커서는 유저가 결과 셋의 각 행을 top 부터 bottom까지 처리할 수 있게 해주고 결과적으로 반복처리에 사용될 수 있다.
  • 대부분의 DBMS는 결과 셋이 만들어지면 자동적으로 커서를 생성한다.
  • 초기의 JDBC API 버전은 결과 셋의 커서를 위한 새로운 기능을 추가했었다.
    • 앞 뒤로 움직 일 수 있고 특정 행 또는 상대적 행으로 움직일 수 있게 해주는

Transactions

  • 한 유저가 데이터베이스안의 데이터를 처리할 때 다른 유저가 같은 데이터를 동시에 접근할 수 있다.
  • 예를들어 만약 첫번째 유저가 몇개의 열들을 업데이트하고 같은 순간 두번째 유저가 같은 테이블의 열을 선택하는 중이라면 두번째 유저는 부분적으로 오래된 데이터 또는 부분적으로 업데이트된 데이터를 얻을 가능성이 존재한다.
  • 이러한 이유로 DBMS는 트랜젝션을 사용해 하나 이상의 유저가 데이터베이스에 동시에 접근했을 때 데이터를 일관된 상태로 유지한다.
  • 트랜잭션은 논리적 작업 단위를 구성하는 하나 이상의 SQL 문 세트이다.
  • 트랜젝션은 commit 또는 rollback으로 종료되는데 데이터 일관성 또는 데이터 동시성에 문제가 있음에 따라 정해진다.
  • commit문은 트랜잭션의 SQL문에 의해 영구적인 변화를 만들고
  • rollback문은 트랜젝션의 SQL문으로 부터 발생한 결과들을 모두 무효시킨다.
  • lock은 두개의 트랜잭션이 동시에 같은 데이터를 조작할 수 없게 막아주는 매커니즘이다.
  • 예를들어 테이블 락은 commit되지 않은 트랜젝션이 테이블에 존재 시 그 테이블을 drop할 수 없게 해준다.
  • 몇몇의 DBMS에서 테이블 락은 테이블의 모든 행을 잠군다.
  • 행 락은 두개의 트랜잭션이 같은 행을 변경하거나 안 하나의 트랜젝션이 행을 변경하는 중에 다른 트랜젝션이 선택하는 것을 막아준다.

Stored Procedures

  • Stored Procedures란 SQL문 그룹으로 이름을 통해 불려질 수 있다.
  • executable code, 특정 태스크를 수행하는 미니프로그램으로도 불린다.
  • 전통적으로 Stored Procedures는 DBMS특정 프로그래밍 언어로 작성된다.
  • 최신 데이터베이스 제품은 Stored Procedures을 자바언어 와 JDBC API를 사용해 작성할 수 있게 한다.
  • Java 프로그래밍 언어로 작성된 저장 프로시 저는 DBMS간에 바이트 코드를 이식 할 수 있다.
  • 한번 저장 프로시저가 작성되면 (재)사용될 수 있는데 DBMS가 데이터베이스에 저장하기 떄문이다.
  • 저장 프로시져는 JDBC 코드를 포함한 정적 자바 메소드이다.

Metadata

  • 데이터베이스는 유저 데이터를 저장하고 또한 데이터베이스 자체에 대한 정보도 저장한다.
  • 대부분의 DBMS는 시스템 테이블 세트를 가지고 있고 그것들은 데이터베이스에 존재하는 테이블들, 테이블당 열 이름들, 기본 키, 외래 키, 저장 프로시저 등을 나열한다.
  • 각 DBMS는 각자의 함수로 테이블 레이아웃과 데이터베이스 기능을 얻을 수 있다
  • JDBC는 DatabaseMetaData 인터페이스를 제공합니다.이 인터페이스는 해당 메소드가 드라이버 및 / 또는 드라이버가 작성된 DBMS에 대한 정보를 리턴하도록 드라이버 작성자가 구현해야합니다. 예를 들어, 많은 메소드가 드라이버가 특정 기능을 지원하는지 여부를 리턴합니다. 이 인터페이스는 사용자와 도구에게 메타 데이터를 얻는 표준화 된 방법을 제공합니다.
profile
안녕하세요

0개의 댓글