Mint Flavor Chocolate DEV

JAVA : JDBC를 사용하여 Oracle과 연동하기 본문

JAVA

JAVA : JDBC를 사용하여 Oracle과 연동하기

츠르e 2017. 8. 9. 17:35

JDBC Oracle Property : 환경

  • driver = "oracle.jdbc.driver.OracleDriver"
  • url = "jdbc:oracle:thin:@localhost:1521:XE"
  • user = "DB user 아이디"
  • password = "DB user 비밀번호"

JDBC Exception Handling

  1. ClassNotFoundException
  2. SQLException

JDBC Driver 위치

Oracle : ojdbc6.jar => jdk6.0 jdbc 구현 driver

  1. 컴퓨터시스템(공통) 사용 : jdk\jre\lib\ext> 폴더에 복사
  2. 프로젝트 단위 사용 : 별도의 classpath 추가 설정

javac / java 사용한 클래스를 찾아가는 검색 경로 : classpath

  1. rt.jar : Java SE (표준 api)
  2. jdk\jre\lib\ext> 폴더에 있는 *.jar
  3. set classpath = 환경설정 폴더 지정한 파일
  4. classpath 환경변수 미설정시에는 현재 폴더(working directory)

JDBC API (Java.sql.*, Javax.sql.*)

  1. connection => DB 연결
  2. statement / prepareStatement / CallableStatement
  3. execute(sql) : boolean / executeUpdate(sql) : int / executeQuery(sql) : Resultset
  4. ResultSet => 결과 객체
  5. Driver Manage 클래스 : DB와 연결요청 => getConnection(url, user, password)

JDBC 프로그래밍 절차

  1. Driver loading : Class.forName(driver) ==> 생성자
  2. DB 서버 연결 : Connection conn = DriverManager.getConnection(url, user, password);
  3. SQL 통로개설 : Statement stmt = conn.createStatement(); // 동적 SQL 수행통로
  4. SQL 수행 : stmt.excuteUpdate(sql);ResultSet rs = stmt.excuteQuery(sql);
  5. 결과 처리
  6. 자원 해제 : rs.close(); stmt.close(); conn.close(); ===> close(rs, stmt, conn), close(stmt, conn)

Statement

  • 동적 SQL 수행 통로
  • 실행시점 SQL 구문에 오류 발생
  • N/W traffic 발생 : sql 구문, data가 함께 전송
  • SQL 문자열 변환
  • SQL Injection 보안이슈 야기

preparedStatement

  • 정적 SQL 수행 통로
  • N/W traffic 감소 : DATA만 전송
  • setString() : sql 문자열로 자동 변환처리
  • SQL Injection 발생 방지

CollableStatement

  • DB 서버에 저장된 Stored Produre, Stored Function 호출 사용
  • PL/SQL

Statement 예제 코드

Statement stmt = conn.createStatement();
String sql = "insert into members values('aaa','bbb','ccc')";
stmt.executeUpdate(sql);

PrepareStatement 예제 코드

String sql = "insert into members values(?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setString(1, memberId");
pstmt.setInt(2,mileage);
pstmt.setString(3, mobile);

pstmt.excuteUpdate();

주의사항 : ?에 매핑되는 값을 설정하고 excuteUpdate()를 해줘야 실행됨


'JAVA' 카테고리의 다른 글

JPA 관련 학습정리 시리즈  (0) 2021.10.12
JDBC Pattern  (0) 2017.08.21