'자바프로그램'에 해당되는 글 2건

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)을 변화시킨다.

,

11일차 수업 ( Java I/O , 표준입출력 )

1. 자바 I/O
. 용어 정리
 입력(input)                                                   출력(output)
 (입력스트림)                                                (출력스트림)
소스(source) --------자바프로그램 --------> 대상(sink)
 

 . 스트림의 데이터 종류?
 => 자바 프로그램에서 I/O 가능한 데이터 종류
 a. byte : 바이너리(binary) 데이터 처리시 사용.
 b. char : 문자 데이터 처리시 사용.
 

. 자바 I/O 클래스 제공.
 a. byte
 ==> 입력 최상위 클래스 : InputStream
     - FileInputStream (파일읽기)
     - ObjectInputStream
     출력 최상위 클래스 : OutputStream
     - FileOutputStream (파일출력)
     - ObjectOutputStream

 b. char
 ==> 입력 최상위 클래스 : Reader
     - FileReader
     - InputStreamReader
     - BufferedReader

     출력 최상위 클래스 : Writer
     - FileWriter
     - PrintWriter

 

2. 표준 입출력

1) System.in     표준 입력으로 데이터를 읽어올때 사용

2) System.out   표준 출력으로 모니터로 데이터를 출력 할때 사용

3) System.err    표준 에러로서 모니터에 에러정보를 출력할때 사용한다.

 

<예제 문장 1> 문자 한개를 입력받아 출력

import java.io.IOException;
import java.io.InputStream;

 

public class StandardOutputTest {
 public static void main(String[] args) {
  
  try{
  System.out.print("문자를 입력하세요 : ");
  InputStream a = System.in;
  int n = a.read(); //1byte 입력
  System.out.print("입력 값 : "+(char)n);
  a.close(); // 사용후에는 반드시 close() 사용하여 자원을 해제
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

<출력>

문자를 입력하세요 : abc
입력 값 : a

 

문자를 여러개 입력해도 하나만 입력 받아진다.

 

<예제문장 2>

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

 

public class StandardOutputTest {
 public static void main(String[] args) {

  try {

   System.out.print("문자를 입력하세요 : ");
   InputStream a = System.in;
   InputStreamReader b = new InputStreamReader(a);
   BufferedReader c = new BufferedReader(b);
   String str = c.readLine();

   System.out.print("입력 값 : " + str);

   c.close(); // 사용후에는 반드시 close() 사용하여 자원을 해제

  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

<출력>

문자를 입력하세요 : abc 김상진
입력 값 : abc 김상진

 

입력데이터를 한 라인씩 처리하는 BufferedReader 클래스의 readLine() 메소드를 사용한 방식이다.

또한 String 으로 처리하기 때문에  예제1번처럼 char로 강제형변환을 하지 않아도 된다.

 

=====수업 내용======

 

1. 자바 I/O
 가. 용어 정리
      입력(input)  출력(output)
      (입력스트림)  (출력스트림)
 소스 -------->  자바프로그램 --------> 대상(sink)
 (source)
: 키보드    : 모니터
(표준입력 : standard input)  (표준출력 : standard out)
: 파일     : 파일
: 메모리    : 메모리
: 네트워크    : 네트워크

 나. 스트림의 데이터 종류?
   => 자바 프로그램에서 I/O 가능한 데이터 종류
 a. byte
 : 바이너리(binary) 데이터 처리시 사용.
   예> 이미지, 문자데이터 포함
 b. char
 : 문자 데이터 처리시 사용.
 다. 자바 I/O 클래스 제공.
 
 a. byte
 ==> 입력 최상위 클래스 : InputStream
     - FileInputStream (파일읽기)
     - ObjectInputStream
     출력 최상위 클래스 : OutputStream
     - FileOutputStream (파일출력)
     - ObjectOutputStream

 b. char
 ==> 입력 최상위 클래스 : Reader
     - FileReader
     - InputStreamReader
     - BufferedReader

     출력 최상위 클래스 : Writer
     - FileWriter
     - PrintWriter

  
2. 표준 입출력 ( Standard input / output)
==> 키보드로 입력
==> System 클래스로 처리한다.

가. 표준입력
InputStream is = System.in;
xxx.println(값);
==> System.out.println(값):

나. 표준출력
PrintStream xxx = System.out;

다. 표준에러
System.err

==> StandardInputTest2 실습의 특징은
- 1byte만 읽는다.
- 한글 못 읽는다.
- char로 형 변환시커야 된다.
- 반복처리
- \n과 \r을 필터링하는 작업 추가.
: 결론은 너무 불편하다.
이유는 InputSteam 클래스만 사용했기 때문이다.
다른 유용한 클래스를 같이 사용한다. 

StandardInputTest3 실습의 특징
- 지정된 byte 배열 크기만큼만 저장
- 한글처리 불가
- char로 형 변환 시켜야한다.
- 반복처리

3. try-with-resources 문
==> 자바7부터 사용가능
==> 외부 자원 사용시 자동 close시키는 방법이다.

ex)try(외부자원 선언;외부자원선언2;외부자원선언3){

}catch( ){
}
-----------------------------------
try{
 자원;
}catch(){
}finally{
//명시적으로 자원을  close 해야된다.
}

4. 파일 읽기

==> 어떤 파일이냐? ( 문자데이터, 이미지 )
문자 : FileReader
이미지 : FileInputStream

5. 파일 관련 클래스
==> java.io.file 클래스
==> 전반적인 파일의 정보를 관리.
ex) 경로, 파일명, 디렉토리 정보, 파일크기, 디렉토리 생성, 디렉토리 조회, 파일삭제등....
(파일생성 x)
==> 메타데이터 ( 정보의 정보 )를 관리.

 

블로그 이미지

itworldkorea

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

,