JDBC 개념 환경설정

강정우·2022년 7월 23일
0

JSP, Servlet, JDBC

목록 보기
15/19
post-thumbnail

JDBC

1. 개요

  • Java Database Connectivity 로 java의 VO, ArrayList, 배열, field값들DBMS(Data Base Managment System)(ex. Oracle, MySql, etc...)을 연결해주는 역할을 하는 것이다.
  • 그러다면 만약에 JDBC가 DBMS를 바꿀 때 마다 바뀐다면 어떻게 될까? 엄청남 자원적 소요가 있을 것이다. 이를 방지하고자 JDBC를 interface의 개념으로 등장했다.
  • 따라서 JDBC는 10년차와 1년차 개발자의 코드가 같다.

JDBC 순서

  1. Driver Loading(Dynamic Loading) : 어떠한 DBMS를 사용할 지 명시하는 부분이다.
    실행 전까지 컴파일러가 어떤 드라이버를 쓰는지 모르고 실행하면 알게되기때문에 동적로딩이라고도 함.
  2. Connection 연결 : JAVA와 DB를 연결한다.
  3. SQL문을 작성 및 실행
  4. 연결 끊기

2. 설치

  • 상단 navigation bar -> window -> show view -> other -> type data -> Data Source Explorer 클릭

  • Database Connections 클릭 -> 어떤 DBMS를 쓰는지 확인하는 것.
  • 본인이 쓰는 DB가 Oracle 일 경우

  • 본인이 쓰는 Oracle ver 확인 -> JAR List

  • 쟤가 자바와 오라클을 연결하는 Main 파일이며, 저건 오라클6 jar파일 안에있다.
  • 본인이 쓰는 DB JAR 파일을 갖고와야함.

이때 OK 버튼이 활성화가 안 되었을 시

  1. Navigation 의 Window -> Preferences -> Data Managment -> Connectivity -> Driver Definitions -> Oracle Thin Driver를 Remove
  2. WIndow 계정명이 한글로 되어있어야함. 윈도우키 + R -> netplwiz 검색 -> 계정 이름 영어로 바꾸기
  3. 작업관리자에서 아래의 Oracle 서비스 3개 모두가 실행 중이여야 함
  • 다 됐다면

  • 위와같이 뜬다면 성공! 앞으론 더블 클릭만 누르면 됨.

3. 사용법

1) SQL+ 에서 Oracle 처럼 사용하기

  • 일반적으로 Oracle 절과 똑같다. 다만 시작하기 앞서 본인이 세팅한 대로 프로필을 설정 후 사용하면 된다.

  • 따로 주석 처리를 할 필요는 없다 어차피 드래그해서 본인이 필요한 부분만 alt+x로 실행하기 때문.

2) 자바 main에서 JDBC 본격적으로 사용하기

  1. 프로젝트 안에 드라이버 파일 넣기
  2. 드라이버 로딩(동적로딩)
    어떠한 DBMS의 드라이버를 사용할 것인지 명시.
    만약 경로를 못 찾을 시에 대한 try catch 문이 있어야함.
    try-catch : 예외사항이 발생할만한 부분을 해결하는 방법 외사항이 발생할 것 같은 부분의 코드를 try{}안에 작성 해당예외사항 발생 시 catch로 이동
Class.forName("oracle.jdbc.driver.OracleDriver");
  1. DB와 JAVA를 잊는 connection 객체와 모든 SQL문을 실행하는 prepared statement 객체를 선언한다.
PreparedStatement psmt = null;
Connection conn = null;
  1. 커넥션 연결
    커넥션 연결은 드라이버가 연결해주면 연결시 DB주소, 계정, 비밀번호가 필요하다.
String db_url = "jdbc:oracle:thin:@localhost:1521:xe";
String db_id = "hr";
String db_pw = "hr";
conn = DriverManager.getConnection(db_url, db_id, db_pw);
  1. SQL문장 작성 및 실행
String sql = "INSERT INTO SPRINGMEMBER VALUES(?,?,?,?)";

이때 SQL문장을 실행시키는 prepared statement 객체는 connection으로부터 가지고옴.

psmt = conn.prepareStatement(sql);

이때 index는 1번 부터 시작이다.

psmt.setString(index, value);

psmt.executeUpdate();

  • 이 함수는 성공적으로 문장을 실행한다면 1을 그렇지 않다면 0을 반환하는 함수이다.
    이를 이용하여 등록에 성공했는지 실패했는지 알 수 있다.
  1. 커넥션 열결 해제
    연결 해제는 초반에 driver 연결에도 try-catch문이 적용되었다. 이때 만약 제대로 실행되지 않고 그냥 try문에서만 연결해제를 실행한다면 catch문으로 넘어갔을 때 연결해제가 제대로 이루어지지 않는다. 이를 방지하고자 어느 경우에도 실행되는 finaly key word를 사용하면 된다.
    이때도 try-catch문으로 닫아줘야한다.

JAVA는 뭔가 예외처리를 하는 언어 같다. 뭐만하면 예외처리를 해야한다. 만약 이게 귀찮다면 throw 구문으로 한 곳에서 다 처리해주는 방법이 있긴하다.

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글