Transcript db실습 0531
데이터베이스 실습
2016년 05월 31일
선동한
JDBC 개요
JDBC 등장배경
▶ Java DataBase Connectivity
▶ 자바 애플리케이션에서의 DB접근 및 사용방법에 대한 표준화 필요성 부
각
▶ 자바애플리케이션과 DB와의 독립성 필요
▶ 표준화된 인터페이스 제공
개발자 : DB제품과 상관없이 표준화된 인터페이스를 이용하여 코드를 작성하므
로 각 DB 접속방법 및 구현에 대한 상세한 정보를 알 필요 없음
DB벤더 : 표준화된 인터페이스를 준수하는 벤더만의 고유한 클래스를 구현하므
로 다른 벤더와 다른 독자적인 구현을 유지 할 수 있음
2
JDBC 개요
JDBC Driver
▶ JDBC 인터페이스에 대한 DB 벤더들이 구현한 클래스 라이브러리
▶ 해당 DB벤더의 홈페이지에서 다운 받음
▶ 개발된 애플리케이션에서 DB변경 시 JDBC 드라이버만 교체하면 됨
어
플
리
케
이
션
JDBC
드라이버
관리자
오라클 JDBC 드라이버
오라클 DBMS
MySql JDBC 드라이버
MySql DBMS
MsSql JDBC 드라이버
MsSql DBMS
구현
3
JDBC 개요
JDBC를 이용한 간단한 DB연동 (1/3)
JDBC 프로그래밍 단계
JDBC 드라이버 로드
데이터베이스 연결
사용 클래스
Class.forName()
Java.sql.Connection
Statement 생성
Java.sql.Statement
SQL 문 전송
Java.sql.Statement
결과 받기
Java.sql.ResultSet
연결 해제
Java.sql.Connection
4
JDBC 개요
JDBC를 이용한 간단한 DB연동 (2/3)
JDBC 드라이버 로드
▶Class.forName() 메소드를 통해 JDBC 드라이버를 로드한다.
MySQL : Class.forName(“com.mysql.jdbc.Driver”);
Oracle : Class.forName(“oracle.jdbc.driver.OracleDriver”);
MS-SQL : Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
5
JDBC 개요
6
JDBC 개요
JDBC를 이용한 간단한 DB연동 (2/3)
데이터베이스 연결
▶ Connection con = DriverManager.getConnection(url, uid, pwd);
▶ 위 구문으로 데이터베이스에 연결하고 getConnection 메소드의 인자
url(JDBC형식URL), uid(사용자명), pwd(패스워드)를 넣는다.
7
JDBC 개요
JDBC를 이용한 간단한 DB연동 (2/3)
Statement 객체
▶ 데이터베이스와 sql을 작업하기 위한 통로 역할
1.Statement
= 기본적인 Statement
= createStatement()
2. PreparedStatement
= 반복적인 sql작업을 최적화한 statement
= prepareStatement(String sql)
3. CallableStatement
= stored procedure
= prepareCall(String sql)
8
JDBC 개요
9
JDBC 개요
JDBC를 이용한 간단한 DB연동 (2/3)
Batch & Transaction
▶ Batch기능을 이용한 여러 SQL 일괄 처리
▶ Transaction
여러 DML작업을 하나의 처리작업으로 처리하여 모든 작업이 성공적으로 수행되었을
경우 DB에 반영(commit)하고 그렇지 않은 경우 DB에 반영하지 않도록(rollback)함
10
JDBC 개요
Batch Processing
Batch & Transaction
▶ Batch기능을 이용한 여러 SQL 일괄 처리
▶ Transaction
여러 DML작업을 하나의 처리작업으로 처리하여 모든 작업이 성공적으로 수행되었을
경우 DB에 반영(commit)하고 그렇지 않은 경우 DB에 반영하지 않도록(rollback)함
Transaction 시작
Insert
Insert
Select
Insert
Transaction 정상종료
Commit
or
Transaction 시작
Insert
Insert
ERROR~~~~_~_
Rollback
11
JDBC 개요
Batch Processing
Batch & Transaction
▶ ex) 학생정보 입력
USER
Insert1
Insert2
인터넷 연결 끊어짐
12
JDBC 개요
Batch Processing
COMMIT & ROLLBACK
▶ Transaction
트랜잭션의 시작 : 첫 번째 DML SQL문이 실행될 때 시작
트랜잭션의 종료
- COMMIT 실행(명시적 커밋)
- DDL또는 DCL문이 실행되는 경우(자동 커밋)
- ROLLBACK 실행(명시적 롤백)
- 시스템 장애가 있을 때 발생(암시적 롤백)
13
JDBC 개요
Batch Processing
Example
14
JDBC 개요
JDBC를 이용한 간단한 DB연동 (2/3)
Statement 객체
▶ CallableStatement
= DB의 Stored procedure와 작업하기 위한 Statement
create or replace procedure getUserName(p_id in varchar, o_name out varchar)
Is begin
select name into o_name from userinfo where userId = p_id;
end;
/
D
B
Sdfsf.sql
3gsd.sql
Gsdgsdg.sql
Sdfsdgweg.sql
Sgsgsdg.sql
Sdgdgddddddg.sql
15
JDBC 개요
Oracle Sequence
▶ 숫자 값이 일정한 규칙에 의해서 연속적으로 자동증가 해야 하는 경우 사용
중복 X , 기본키로 사용
CREATE SEQUENCE ICR_ID
INCREMENT BY 1 START WITH 1 ;
현재 값 확인 = ICR_ID.CURRVAL
다음 값 생성 = ICR_ID.NEXTVAL
(사용하는데 제약이 약간 있음)
(불펌)
select * FROM USER_SEQUENCES (시퀀스정보가 담겨있는 시스템 데이터베이스 )
EX)
insert into test(ICR_ID.NEXTVAL,’선동한’);
insert into test(ICR_ID.NEXTVAL,’선동한’);
insert into test(ICR_ID.NEXTVAL,’선동한’);
ID
1
2
3
NAME
선동한
선동한
선동한
16
JDBC 개요
실습 & 과제
String url = “jdbc:oracle:thin:@203.253.146.198:1521:orcl”
ID : grade2
Pw : grade2
Table temp
17
JDBC 개요
실습 & 과제
18
JDBC 개요
실습 & 과제
19
감사합니다
20