ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오라클 DB 정리09-JDBC
    비전공자 공부일기/:: DB - SQL 2019. 5. 29. 10:26

    ● JDBC(Java DataBase Connectivity)
     
      1. JDBC 환경 구축
     
        - JDK 설치 및 환경설정
     
          http://www.oracle.com   => 다운로드
     
         환경변수 => JAVA_HOME 및 Path 설정      
     
        - DBMS(Oracle) 설치
     
          http://www.oracle.com  => 다운로드
     
        - DBMS(Oracle) Driver 다운로드 후 JDK가 사용할 수 있도록 복사
          
          Oracle 경우
        
            >> C:\oracle\product\11.2.0\dbhome_1\jdbc\lib 디렉토리 : ojdbc6.jar(oracle driver)
     
          OracleXE 경우
          
            >> C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib 디렉토리 : ojdbc6.jar(oracle driver)
     
         ※ 이클립스 사용시 라이브러리 추가 기능을 이용하여 ojdbc6.jar 파일을 프로젝트에 추가 

      2. JDBC 프로그램 작성 => java.sql 패키지의 인터페이스 이용
     
       1) Driver 클래스 메모리 로드 => Driver 클래스를 객체 생성
     
          Class.forName("oracle.jdbc.driver.OracleDriver");
     
       2) Connection 객체 얻어오기 => DB 접속 정보를 저장한 객체
     
          Connection Connection객체
           =DriverManager.getConnection(URL주소, 유저명, 암호);
     
          ※ URL주소 => Oracle
     
             jdbc:oracle:thin:@서버주소:port번호:SID
     
       3) Statement객체를 얻어오기 => SQL명령을 입력하여 실행하기 위한 객체
     
          Statement Statement객체=Connection객체.createStatement();
     
       4) SQL 명령 전송 실행 => Statement객체의 executeUpdate() 메소드 또는 executeQuery() 메소드
     
          Statement객체.executeUpdate(SQL명령);  => DML명령(DDL명령) 사용시 - int 반환(변경행의 갯수 반환)
     
          Statement객체.executeQuery(SQL명령);  => Select 명령 사용시 - ResultSet객체 반환(검색된 데이타들의 정보)
     
          ※ ResultSet 객체를 얻어온 경우 커서를 이용하여 행 이동(next() 메소드)후 getXXX() 메소드를 이용해 데이타를 얻어와 출력
     
       5) Connection객체 및 SQL 관련 객체 종료
     
          Statment객체.close();
        
          Connection객체.close();


    ● Transation 사용 방법

      - Application에서 실행된 SQL 명령은 Auto Commit

      - Connection객체.setAutoCommit(false); 을 이용해 트렌젝션을 사용할 수 있다.


    ● ResultSet 객체

      - DB에서 select된 정보를 저장하기 위한 객체 => 2차원 배열 형식으로 표현

      - ResultSet 객체에 존재하는 커서를 이용하여 데이타(행)을 이동하여 필드값(열)을 얻어올 수 있다.

        => ResultSet객체.next() : 커서를 아래로 이동하며 데이타가 있을 경우 true를 반환

      - ResultSet객체의 커서 위치에 존재하는 행의 필드값은 getXXX() 메소드를 이용하여 값을 얻어온다.

        => ResultSet객체.getXXXX(index 또는 필드명) 

        => XXXX는 자료형을 뜻하면 자료형을 모를 경우 String을 사용한다.

      ※ ResultSetMetaData 객체 : 검색된 테이블의 정보(열의 갯수,데이타 타입등)를 저장한 객체


    ● Statement 및 PreparedStatement  => 명령 객체

      - Statement => 완성된 형식의 SQL 명령을 실행

      - PreparedStatement => 미완성된 형식의 SQL 명령을 실행(SQL명령에 Java 변수 사용시)

        => InParameter를 사용하며 setXXX() 메소드를 이용해 SQL 명령을 완성한다.    


    ● 컨텍션풀(ConnectionPool)

      - ConnectionPool : Connection 객체를 미리 만들어 놓은 클래스

      - ConnectionPool을 만들어 주는 이유

        => 미리 Connection 객체를 만들어 필요한 경우 바로 사용 가능 - 빠른 실행 가능     

        => Connection 객체의 숫자를 제어
      
      - ConnectionPool을 사용하는 방법 

        => ConnectionPool 클래스 사용 또는 WAS(Apache) DBCP(DataBase ConnectionPool) 사용

      - ConnectionPool 클래스 사용
     
        주의) db.properties 파일을 src 디렉토리에 복사  

        주의) 생성자를 이용하여 ConnectionPool 객체 생성 불가 => 생성자가 private 접근지정자를 가지고 있기 때문

              ex) ConnectionPool pool=new ConnectionPool(); 

              왜??? ConnectionPool 객체가 여러 개 생성되는 것을 막기 위해 => SingleTon 기법


    ● DTO 클래스 및 DAO 클래스

      - DTO(Data Transfer Object) 클래스 => VO 클래스, JavaBean 클래스

        => Table의 정보를 저장하기 위한 클래스

        => Table의 필드와 동일한 자료형을 가지고 있는 멤버변수와 생성자, Setter & Getter 메소드로 구현

      - DAO(Data Access Object) 클래스 => Manager 클래스

        => Table과의 작업을 전담하는 클래스

        => 테이블의 데이타 삽입,삭제,변경,검색등의 메소드 구현 


    댓글

coding wanee