'JDBC/JDBC 정리'에 해당되는 글 1건

  1. 2010.02.18 <JDBC>

<JDBC>

JDBC/JDBC 정리 2010. 2. 18. 13:27

 

1. JDBC (Java Database Connectivity)
  (1) 정의
       JVM의 시스템과 DB시스템을 연결하고 통신하기 위한 JAVA 표준 스펙

  (2) JDBC 프로그램 순서
     <1> Driver 메모리에 로딩 (DB회사에서 JDBC스펙에 맞게 구현해 놓은 클래스들)
     <2> DB와 연결 (Connection 객체 생성)
     <3> SQL구문(쿼리) DB서버로 전송 (Statement or PreparedStatement 객체 생성)
     <4> 쿼리 실행 (ResultSet 생성하거나 결과값을 받음)
     <5> ResultSet 객체에서 원하는 값을 추출 (select일 경우)
     <6> 위의 객체(Connection, Statement, ResultSet)들을 반드시 close() 해준다. (IO개념)

  (3) Connection 을 가져오는 두가지 방법 : DriverManager 와 DataSource
       http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstart/datasource.html (원문) --> 5.0 API DOC에서 검색
       http://xrath.com/devdoc/jdk1.5/ko/guide/jdbc/getstart/datasource.html (번역문)
       http://xrath.com/devdoc/jdk1.5/ko/
     <1> DriverManager : Class.forName으로 driver의 객체를 만들면 그 객체가 자동으로 DriverManager에
                                   레지스터된다.
     <2> DataSource : JNDI lookup을 일반적으로 사용하나 사용하지 않을 수도 있다.
            - JNDI : Java Naming and Directory Interface 특정한 이름으로 분산 시스템의 특정 리소스나 객체에
                        접근 가능하게 해주는 기술
   (4) Connection Pooling
        일반적으로 Connection 을 여는 과정이 많아질 경우 DB에 너무 많은 과부하가 생길 수 있다.
        그러한 단점을 극복하고자 일정량의 Connection 을 미리 만들어 놓고 그것을 필요에 따라서만
        내어주는 방식을 취하는 것이 Connection Pooling 이다.

2. 주요 클래스
  (1) Connection
  (2) Statement
     <1> 생성
            con.createStatement();
     <2> 실행
            [1] SELECT문일 경우
                  --> ResultSet rs = stmt.executeQuery(sql);
            [2] INSERT/UPDATE/DELETE 문일 경우
                  --> int n = stmt.executeUpdate(sql);
            [3] 그 외, sql문일 경우
                  --> boolean b = stmt.execute(sql);
  (3) ResultSet
     <1> 생성 :  stmt.executeQuery(sql);
     <2> 실행(추출)
            rs.next();
            rs.getType(); --> 각 데이타타입에 따른 GET메소드.doc 참조
  (4) PreparedStatement (준비된 Statement)
       미리 SQL문이 세팅된 Statement가 DB에 전송되어져서 컴파일 되어지고,
       SQL문의 ?만 나중에 세팅해서 실행이 되어지는 준비된 Statement.
     <1> 장점
            Statement 에 비해서 반복적인 SQL문을 사용할 때 더 빠르다.
            (이유 : ?를 제외한 SQL문에 DB에서 미리 컴파일 되어져서 대기하고 있기 때문)
     <2> 단점
            SQL문마다  PreparedStatement 객체를 각각 생성해 줘야 한다.
            (Statement 객체는 SQL문이 달라지더라도 한개만 생성해서 재사용가능) 

Posted by 미스터네오
,