Download presentation
Presentation is loading. Please wait.
Published byRandolf Gordon Modified 6년 전
1
Kim heesang deaxboud3@naver.com
JDBC PROGRAMMING Kim heesang
2
Java DataBase Connectivity 자바 프로그램 내에서 DB와 관련 작업 처리를 도움
JDBC 란? Java DataBase Connectivity 자바 프로그램 내에서 DB와 관련 작업 처리를 도움 자바로 작성된 프로그램을 일반 데이터베이스에 연결하기 위한 응용프로그램 인터페이스 규격 DBMS에 넘겨질 SQL문을 각 시스템(Oracle, Mysql, … )에 맞도 록 바꾸어 준다.
3
Oracle에서는 JDBC Driver(oracle6.jar)를 지원한다. Eclipse
%ORACLE_PATH%\product\12.1.0\dbhome_1\jdbc\lib Eclipse
4
Eclipse Project Explorer – 우클릭 – New – Project Java Project – Project name 입력 – Finish
5
Eclipse에서 Oracle JDBC를 추가하는 방법
Oracle JDBC Driver Eclipse에서 Oracle JDBC를 추가하는 방법 Project – 우클릭 – Properties Java Build Path – Libraries Add External JARs – Oracle JDBC Driver
6
Driver Loading & Connection
Oracle JDBC Driver의 클래스 이름은 oracle.jdbc.driver.OracleDriver Driver를 로딩할 때, 이 클래스 이름을 사용한다. Class.forName 메소드를 이용하여 driver를 로딩하는 코드이다. Class.forName(“oracle.jdbc.driver.OracleDriver”);
7
Driver Loading & Connection
JDBC에서 Connection 객체를 얻을 때 DriverManager.getConnection 메소드를 호출 String타입의 url을 인자로 넣어줘야 하는데, Oracle Connection Url은 다음과 같다. 예제)
8
Driver Loading & Connection
오라클 상태 확인 Lsnrctl status Host (localhost) Port 1521 Service name orcl -> xe
9
Hello, World Java의 public class명은 File명과 동일해야 함
Java응용 프로그램을 실행하기 위해서는 main()함수가 있어야 하며, main()함수가 프로그램의 시작점인 것입니다.
10
Connection 객체 Statement 객체 ResultSet 객체 SQL 질의 하기
SQL 문장의 실행 전에 우선 Connection 객체 필요 Connection 객체는 연결된 커넥션을 나타냄 Statement 객체 Connection 객체에 의해 프로그램에 구현되는 일종의 메소드 집합을 정의 Statement 인터페이스를 구현한 객체 Connection 클래스의 createStatement() 호출함으로써 얻음 ResultSet 객체 Select 질의의 경우 결과물로 ResultSet을 반환 ResultSet은 질의에 결과를 담고 있음 ResultSet 객체는 ‘Cursor’를 가지며, Cursor를 이용하여 특정 행에 대한 참조를 조작할 수 있다. Cursor는 초기에 첫번째 행을 가르키며, next()를 이용하여 다음위치로 옮길 수 있음 Next()는 행에따라 true/false를 반환하며 while로 제어한다.
11
Driver Loading & Connection
12
Statement 객체 ResultSet 객체 Statement & ResultSet
JDBC를 이용하여 SQL문을 실행하기 위해서는 Statement객체를 생성해야 함 Statement stmt = connection.createStatment(); stmt.execute(); stmt.executeQuery(); stmt.executeUpdate(); stmt.close(); … ResultSet 객체 Statement객체에서 받은 결과를 처리하기 위한 객체 ResultSet rs = stmt.excuteQuery(“SELECT * FROM tbl_book”); rs.next(); rs.getString(int n); rs.close();
13
자원의 반납 Connection, Statement, ResultSet 객체의 사용이 끝나면 명시적으로 close()를 호출하여 해당 자원을 반납해야 한다. 만약 객체(Connection, Statement, ResultSet)가 자원을 반납하 지 않고 계속 heap메모리에 남아있게 된다면, DB서버는 해당 SQL문에 해당하는 결과를 계속 저장하고 있어야 하므로 DB 서버 의 불필요한 메모리가 증가한다.
14
SELECT
15
INSERT
16
UPDATE
17
DELETE
18
실습 3-1 기존에 사용하던 테이블에 JDBC 프로그램을 이용하여 SELECT, INSERT, UPDATE, DELETE SQL을 사용하여 아래와 같은 결과를 만드세요. INSERT 후 SELECT 로 결과 확인 (데이터 INSERT 및 SELECT) tbl_book 테이블에 Bookid 101, 102, 103으로 임의의 데이터 삽입 및 SELECT 결과 UPDATE 후 SELECT 로 결과 확인 (데이터 UPDATE 및 SELECT) 위의 101, 102, 103에 대하여 UPDATE 및 SELECT 결과 DELETE (INSERT 데이터 삭제) 위의 101, 102, 103에 대하여 DELETE 및 SELECT 결과
19
실습 3-2 JDBC 프로그래밍을 이용하여 책이름, 주문자 이름, 주문자 전화번호, 주문 날짜를 보여주는 뷰를 만들고 뷰에서 주문자 이름이 ‘이종연’ 데이터를 조회하시오.
20
10개, 50개 정도의 data를 insert하는데는 시간이 얼마 걸리지 않다.
생각해보기 100만건이 넘는 data를 insert한다면?? 얼마나 걸릴까요? 10개, 50개 정도의 data를 insert하는데는 시간이 얼마 걸리지 않다. 하지만 데이터가 100만개가 넘는 BIG DATA라면 어떨까? I/O 비용발생
21
그래서 나온 대책이 bulkinsert와 같은 bulk명령어들 궁금하신 분들은 google을 통하여 조금 더 공부해보세요!
생각해보기 100만건이 넘는 data를 insert한다면?? 얼마나 걸릴까요? 그래서 나온 대책이 bulkinsert와 같은 bulk명령어들 궁금하신 분들은 google을 통하여 조금 더 공부해보세요! I/O 비용발생
Similar presentations