노무현 대통령 배너

1. JDBC (Java DataBase Connectivity)
    (1) 정의
        JVM과 DB 시스템
        (DBMS : DataBase Management System)을 연결하고 통신하기 위한 Java 표준스펙
    (2) JDBC 프로그래밍 순서 (구형방식 old type)
        <1> Driver 를 메모리에 로딩 (DriverManager)
        <2> DB와 연결 (Connection 객체 생성)
        <3> SQL 구문(쿼리) DBMS 로 전송 (Statement 객체 생성)
        <4> 쿼리 실행 (ResultSet 객체 생성 혹은 결과값 받음)
        <5> ResultSet 객체에서 원하는 값을 추출 (select 쿼리일 경우)
        <6> 사용한 객체들을 닫아준다.(close() IO 개념)

    (3) Connection 생성 두가지 방법
        <1>DriverManager : Class.forName 으로 driver의 객체를 만들면 그객체가
             자동으로 DriverManager 에 등록된다.
        <2> DataSource : JNDI lookup을 일반적으로 사용하나 물론 사용하지 않을 수도 있다.
             -JNDI :
             Java Naming and Directory Interface
             특정한 이름으로 시스템의 특정 리소스나 객체에 접근 가능하게 해주는 기술
    
    (4) Connection Pooling
        일반적으로 Connection 을 생성하는 일이 많아질 경우 (DB에 접속이 많아질 경우)
        DB에 과부하가 심해진다.
        그러한 과부하를 줄여보고자 Connection 을 미리 만들어 놓고 그것을 필요에 따라서
        내어주고 돌려받는 방식

2. 주요 인터페이스
    (1) Connection
        JDBC 코딩의 시발점 (DB와 연결)
    (2) Statement
        <1> 생성
            conn.createStatement();
        <2> 실행
            [1] select
                -> ResultSet rs = stmt.executeQuery(sql);
            [2] insert/update/delete (DML)일경우
                -> int result = stmt.executeUpdate(sql);
            [3] 그외 sql 문일 경우 (alter, create.....)
                -> boolean result = stmt.execute(sql);
    (3) ResultSet
        <1> 생성 : executeQuery()
        <2> ResultSetMetaData : rs.getMetaData();
            ResultSet 에 대한 지문 데이터
            (컬럼 개수, 컬럼 타입 등을 알아냄)
        <3> 실행 : rs.next() 커서 이동후 데이터 추출
   
    (4) PreparedStatement
        미리 sql 문이 세팅된 Statement 가 DB 에 전송되어져서
        컴파일되고, SQL 문의 ? 부분만 나중에 세팅해서 실행하는
        준비된 Statement
        <1> 장점
            반복적인 똑같은 SQL 문을 사용할때 Statement 보다
            실행속도가 빠르다
            (이유 : ? 를 제외한 SQL 문이 DB 에서 미리 컴파일되서 대기하고 있기 때문)
        <2> 단점
            서로다른 SQL 문을 실행하려면 각각 PreparedStatement 를 생성해줘야 한다.
            (Statement 는 다른 SQL 문을 실행할때에 한개만 생성해서 재활용하는것이 가능
            : stmt.executeQuery(sql1), executeUpdate(sql2) )

크리에이티브 커먼즈 라이센스
Creative Commons License

"JDBC" 카테고리의 다른 글


이 글의 관련글
2008/07/22 11:37 2008/07/22 11:37

트랙백을 보내세요

트랙백 주소 :: http://pippen80.cafe24.com/trackback/101

댓글을 달아 주세요

[로그인][오픈아이디란?]
비밀글 (Serect)
댓글 달기 (Submit)