JNB
rss

skin by 이글루스

JEUS

JDBC 09.06.15 14:08

<<<<<<<<<<<<<<<<<< JDBC>>>>>>>>>>>>>>>

 

 

1. JDBC (Java DataBase Connectivity)


 (1) 정의
  JVM과 DB 시스템
  (DBMS : DataBase Management System)을 연결하고 통신하기 위한 JAVA 표준 스펙
 
 (2) JDBC 프로그래밍 순서 (구형방식 old type)


     <1> Dirver를 메모리에 로딩( DriverManager)(구형방식 old type)
     <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.executeQurey(sql);
            [2] intert / uptdate /delete : dml일 경우
                -> int result = stmt.executeUpdate(sql);
            [3] 그외 sql문일 경우 (alter, create...)
                -> boolean result = stmt.execute(sql);
    (3) ResultSet
          <1> 생성 : executeQurey()
          <2> ResultSetMetaData : rs.getMetaData();
                RusultSet 에 대한 지문 데이터  (컬럼 개수, 컬럼 타입 등~~)
          <3> 실행 : rs.next() 커서 이동후 데이터 추출
          <4> 데이터의 수정 (참고만 하세요 거의 쓰지 않음)
             1) 조건
                - 단일 테이블에서 select 를 해야한다.
                - select * 은 안된다.
             2) 생성
                - Statement stmt = con.createStatement(
                                      ResultSet.TYPE_SCROLL_INSENSITIVE,
                                      ResultSet.CONCUR_UPDATABLE);
                   2번째 옵션인 _updatable 에 의해서 수정가능
             3) 방법 API 문서 ResultSet 참조

 

     (4) PreparedStatement
         미리 SQL문이 세팅된 Statement 가 DB에 전성되어져서 컴파일되고, SQL 문의 ?
         부분만 나중에 세팅해서
실행하는 준비된 Statement


        <1> 장점
             반복적인 똑같은 SQL문을 사용할때 Statement 보다 실행속도가 빠르다
             (이유 : ?를 제외한 SQL문이 DB에서 미리 컴파일돼서 대기하고 있기 때문)
  

       <2> 단점
              서로 다른 SQL문을 실행하려면 각각 PreparedStatement 를 생성해줘야 한다.
              (Statement 는 다른 SQL문을 실행할때에 한개만 생성해서 재활용 가능
              :stmt.executeQuery(sql1)  13.executeUpdate(sql2))


      (5) CallableStatement
              DB상의 PL/SQL 을 이용하기 위한 Statement
             (일반적으로 procedure 를 호출하기 위한 용도)
             OUT parameter를  regist(타입 등록) 해주고 execute(실행) 뒤에 get을 이용해서  

             결과를 받을수 있다.
    


        

    
Copyright 1999-2018 Zeroboard / skin by JY