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