본문 바로가기
Backend

JDBC ( JDBC 실습 / Java DB api / Java DB 연결 / JDBCTemplate / 웹개발 / 웹기초 / 웹독학 / 백엔드 개발자 / 프로그래밍)

by 비전공자 기록광 2021. 2. 3.
반응형

JDBC

jdbc는 java databace connectivity로 자바에서 DB에 접근해 조작할 수 있게 도와주는 api 이다.

자신이 쓰는 DB에 맞는 jdbc를 받아야 하고,

나는 오라클을 써서 OJDBC를 다운 받았다.

 

www.oracle.com/index.html

오라클 홈페이지에서 로그인하고 자신의 JDK의 버전을 확인하고 받으면 된다.

나는 JDK 8 과 ojdc6이다.

 

▶ JDBC 실행 순서

  1. 드라이버 등록
  2. DB연결
  3. sql 실행
  4. 결과 리턴
  5. 종료

 

▶ JDBC 클래스 생성과정

- DriverManager 

: Connection 인스턴스를 얻게 해주는 역할

                    -> getConnection( )  메소드 이용해 Connection 생성

                    -> Class.forName( ) 메소드 통해 드라이버 로딩 

       

- Connection 

: Statement 객체를 얻게 해주는 역할

 

- Statement

: ReslutSet 을 얻게 해주는 역할 / 쿼리문 사용하기 위해 필요한 객체

                   -> createStatement( ) 메소드로 호출되어 생성됨

 

- PreparedStatement

                   ->preparedStatement( ) 메소드로 호출되어 생성됨

 

- ResultSet

: 쿼리 수행 후 결과 담아주는 역할 / sql 결과 테이블을 담아줌

 

 

 

 

JDBCTemplate

 

우리가 dao에서 

 

1. 드라이버 등록

2. DB연결

3. sql 실행

4. 결과 리턴

5. 종료

 

를 매번 실행하기 조금 번거로울때가 있다.

그럴때 JDBCTemplate에서 미리 기능을 정의하면 중복된 부분을 피해서 쓸 수 있다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package com.jdbc;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class JDBCTemplate {
    
    
    public static Connection getConnection() {
    
        try {
            //드라이버 연결
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            //드라이버 연결실패
            e.printStackTrace();
        }
        
        String url = "jdbc:oracle:thin:@localhost:1521:xe";
        String id="scott";
        String pw="tiger";
        
        Connection con = null;
        
        try {
            //계정 연결
            con = DriverManager.getConnection(url, id, pw);
            
            con.setAutoCommit(false);
        } catch (SQLException e) {
            //계정 연결 실패
            e.printStackTrace();
        }
        
        return con;
    }
    
    public static boolean isConnection(Connection con) {
        boolean valid = true;
        
        try {
            if(con == null || con.isClosed()) {
                valid = false;
            }
        } catch (SQLException e) {
            valid = true;
            e.printStackTrace();
        }
        
        return valid;
    }
    
    //연결된 상태인지 아닌지 확인 ->연결 상태 확인되면 close
    public static void close(Connection con) {
        if(isConnection(con)) {
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    
    //stmt가 null아닐때 close
    public static void close(Statement stmt) {
        if(stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
 
    
    //rs가 null 아닐때 close
    public static void close(ResultSet rs) {
        if(rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
 
    //연결 상태라면 commit
    public static void commit(Connection con) {
        if(isConnection(con)) {
            try {
                con.commit();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    //연결 상태라면 rollback
    public static void rollback(Connection con) {
        if(isConnection(con)) {
            try {
                con.rollback();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    
}
cs

 

이렇게 미리 JDBCTemplate을 만들어두면 필요시 import 해서 쓸 수 있다.

 

밑의 Dao가 그 예시이다.

 

 

이 dao를 보면 ① 드라이버 등록 ② db 등록을 하지 않은 걸 볼 수 있다.

중복되는 부분이 줄어드는게 장점이다.

 

이클립스 DB 연결

Window -> Show view -> Database Connections

New를 클릭해 연결할 db를 찾는다.

 

 

내 DB에 따라 고르기

 

 

저 요상한 기호를 클릭한다.

 

 

내가 받은 오라클 버전을 선택하고 바로 옆에 JAR List로 간다.

 

내 jdbc는 ojdbc6 이니 지워주고 추가해준다.

 

 

ok를 누르면 요 화면이 뜬다.

 

 

나는 저번에 오라클 sql 실습하며 만들어준 유저를 쓴다.

2021/01/03 - [IT 독학/Database] - 초보자를 위한 SQL 200제 (1) 실습 환경 설정하기 + 오류해결 (DB 실습 / 오라클 실습 / oracle 초보 / ORA - 12505 해결)

 

초보자를 위한 SQL 200제 (1) 실습 환경 설정하기 + 오류해결 (DB 실습 / 오라클 실습 / oracle 초보 / ORA

오라클을 실습하기 위해 책을 찾다가 좋은 실습서를 발견했다. 초보자를 위한 SQL 200제(PL/SQL) 데이터를 활용하기 위한 최선의 방법!그동안 수없이 많은 프로그래밍 관련 기술들이 나왔지만, 데이

datamoney.tistory.com

 

본인이 오라클(db)을 쓰며 생성했던 아이디와 패스워드를 넣어주면 된다. 잘 되는지 확인해주고 넘어간다.

 

 

이렇게 뜨면 이클립스와 db 연결이 잘 된 것이다.

 

JDBC를 통해 java에서 db를 연결해 여러 기능을 사용할 수 있다.

반응형

댓글