18일차 수업(2) ( JDBC )

 

JDBC ( Java Database Connectivity) 

자바프로그램과 데이터베이스와 연동하는 기술이다.


  
                            JDBC
 자바프로그램 <-------------> 데이터베이스

 

먼저 JDBC를 배우기전에 준비해야할 사항들이 있다.

첫째 데이터베이스 설치 및 실행여부 확인

둘째 드라이버(dirver) 확인
-> 벤더(회사)에서 만든 클래스 파일들을 의미한다.
-> 압축해서 제공한다. ( *.jar, *.zip 형식

셋째 클래스패스 ( classpath )
a. path  ==> 명령어의 경로

b. classpath 를 설정해주는 방법

클래스파일의 경로   

CLASSPATH 환경변수에 설정방법
C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6_g.jar

 

또는

 

ext 폴더에 저장하는 방법
1) 이클립스의 아무 프로젝트나 하나잡고 오른쪽클릭 -> Properties 들어간다
2) JRE System Library[JavaSE-1.7] JRE인지 JDK 인지 확인하고
3) C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6_g.jar 있는
   ojdbc6_g.jar 파일을 ext 폴더에 복사하여 붙여넣고 이클립스 재실행

 

여기까지가 JDBC를 사용하기위한 사전 준비!

------------------------------------------------------------------------------------

 

 

이제 javaDB를 연결하는 자바소스를 알아보겠습니다.

 

먼저 아래와 같이 설정을 해줍니다.

 

// ojdbc6_g.jar 압축파일내의 핵심 클래스
String driver = "oracle.jdbc.driver.OracelDriver";
 //서버의 ip,port번호, sid
String url = "jdbc:oracle:thin:@localhost:1521:xe";
// 사용자 계정

String userid = "scott";
 // 사용자 비번
String passwd = "tiger";

 

그리고 나서 드라이버 로딩을 합니다.!

 

Class.forName ( driver ); 

 

이것을 써주면 에러가 나니까 예외 처리를 해주어야한다!

 

그다음엔  Connection 맺기

 

import java.sql.Connection;

 Connectioncon = DriverManager.getConnection( url,userid,passwd );

 

커넥션을 맺은 후에는 Statement 생성 ( SQL 문 전송 )

Statement 종류 3가지가 있습니다.

 

1) Statement
>

delete from person where age = 10;
delete from person where age = 11;  
..
delete from person where age = 100; 

=> statement 얻기
Statement stmt = con.createStatement(); 

2) PreparedStatement (*)  제일 자주 사용!

 delete from person where age = ?;
 나중에 ? 에 값을 지정하는 방식

 => PreparedStatement 얻기
    PreparedStatement pstmt = con.PreparedStatement( sql );

 // ? 값 설정
  pstmt.setInt(1,10);

  insert into person ( num ,name, age, address)
 

3) callableStatement
  => PL/SQL 사용시

 

Statement 설정이 끝나면 SQL문 전송

- Statement 이용
: insert, delete, update ( DML 전송)
   int n = stmt.executeUpdate(sqp);
   => n 값은 적용된 레코드 갯수
   => 디버깅 가능 ( 성공실패확인 가능 )
 : select
   ResultSet rs = stmt.executeQuery(sql); 
   while(rs.next()){
 int num = rs.getInt("num");
 String name = rs.getString("name");
 int age = rs.getInt("age");
 String address = rs.getString("addresss");
 System.out.println(num+"\t"+name);
   }
 
- PreparedStatement 이용

  
마지막으로 외부자원 close !! 사용했던 자원 역순으로......

 

Connection con
Statement stmt
ResultSet rs

 

rs.close();
stmt.close();
con.close();

 

------------------------------------------------------------------------------------
JDBC 사용시 반드시 적용시키는 2가지 패턴

. DAO 패턴 ('다오'라고 읽지 말고 '디에이오'라고 읽기 )
-> Data Access Object 패턴
-> Data? (파일, 데이터베이스)


. DTO 패턴
-> Data Transfer Object 패턴
-> 여러 데이터를 한꺼번에 효과적으로 전송하기 위한 클래스.
-> Value Object(vo), domain object ,entity 라고도 한다.
-> 일반적으로 테이블 당 한개씩 생성한다.

 
블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,