공지사항

  • 깃허브랑 블로그의 운영 고민과 결론
즐거운 개발계발
무한한 계발
즐거운 개발계발

블로그 메뉴

  • 글쓰기
  • 관리자 페이지
  • 분류 전체보기 (26)
    • GitHub Project (0)
    • 소소한 공부 메모 (12)
    • 오픈 다이어리 (0)
    • WEB (3)
      • [자바 웹개발 워크북 - 프리렉 출판] (2)
      • 서블릿 & JSP (1)
    • Java (5)
    • DB (Oracle) (0)
    • Spring (0)
    • SQLD (1)
    • Front-End (1)
      • CSS (1)
    • Tools (3)
      • Git (1)
      • Visual Studio Code (1)
      • 파워포인트 (1)
    • CI_CD (0)
    • Coding Test (1)
      • Problem Solving (0)
      • Tips (1)
hELLO · Designed By 정상우.
즐거운 개발계발

무한한 계발

Java

jdbc가 뭐지?

2022. 9. 25. 18:26

국비학원에서 배운 내용을 복습하는 중이다. 학원에서 진도나가면 키보드 따라치기 급급해서 주말이라도 혼자 공부하는 습관을 들여야 한다.

 

주중에 배운 내용중에 이클립스와 오라클을 연결하기 위해 JDBC를 설치하고 환경설정 하는 것을 했었다. 내 기억으론 이클립스 창에 DB를 연결해주는 java 코드를 연결하고, sql문을 만들어서 실행시키면 DB 내용을 조회 할 수 있었다. 매우 멋지다고 생각한다. sql developer가 아직 익숙하지 않는 나에게는 이클립스 IDE를 사용하는게 더 편하기 때문이다.

 


 

JDBC가 뭐지?   [  https://dyjung.tistory.com/50  ]

jdbc란 자바에서 DB 프로그래밍을 하기 위해 사용되는 API이다. 그리고 놀랍게도 DBMS의 종류에 상관없다고 한다.

 

구성을 보면

자바(웹)어플리케이션 ㅡ JDBC API ㅡ JDBC 드라이버 ㅡ 데이터베이스 순으로 연결되어 있다.

 

순서

1) JDBC 드라이버 로드

2) DB연결

3) DB에 데이터를 읽거나 쓰기 (SQL문)

4) DB 연결 종료

 

JDBC 드라이버

- DBMS와 통신을 담당하는 자바 클래스

- DBMS 별로 알맞은 JDBC 드라이버 필요 

- 로딩코드: Class.forName("JDBC드라이버 이름")

오라클: oracle.jdbc.driver.OacleDriver

 

JDBC URL

- DBMS와의 연결을 위한 식별 값

- JDBC 드라이버에 따라 형식이 다름

- 구성 : jdbc:[DBMS]: [데이터베이스식별자]

Oracle: jdbc:oracle:thin:@HOST:PORT:SID

 

저기서 패스워드 문자열을 일부러 틀린걸로 해보니 "오라클 연결 실패"가 출력이 되더라.

Class.forName 밑에 jdbc drvier 로딩 성공이라는 출력문이 있는걸 보니, Class.forName은 jdbc driver 로딩을 담당하는 역할로 유추했다.

 

 

getConnection  

[  https://kimsaemjava.tistory.com/66?category=334222   ]

1) static 메소드이므로 클래스 이름을 이용해서 호출한다.

2) throws 하고 있는 SQLException은 Exception의 하위 클래스이므로 Exception에 대한 처리를 해야한다.(try~catch 이용)

3) 매개변수로 전달하는 접속문자열을 보며 어떤 DBMS에 연결해야 하는지 판단한다. 이는 제조사 홈페이지에서 확인

ex) 오라클의 경우 jdbc:oracle:thin:@ip:port:데이터베이스서비스명

4) 리턴타입은, java.sql.Connection이 리턴 connction은 인터페이스로 정의 되어있다. 내부에서는 어떤 DBMS를 사용하느냐에 따라 달라질 수 있도록 다형성이 적용되어 있다.

 


 

SQL developer 을 실행시키고 테이블을 하나 만들어주자. 그리고 이클립스에서 SQL문을 작성후 실행하여 데이터가 실제로 들어가는지 확인해보자. 

create table tb_board(
boardNum number(10) primary key,
id varchar2(20),
title varchar2(20),
content varchar2(20),
write_date date,
hit number(10)
);

create sequence board_seq;
select * from tb_board;

 

아래는 이클립스 코드

package webTest01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class DBconn {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String driver = "oracle.jdbc.driver.OracleDriver";
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		String user = "nowon";
		String password = "1234";
		String sql = "update tb_board ";
		sql = sql + "set title = 'statement테스트' ";
		sql = sql + "where boardNum = 2";
				
	//"insert into tb_board values(board_seq.nextval,'kang','jdbc테스트','Insert테스트',sysdate,0)";    
		
		
		try {
			// driver 로딩
			Class.forName(driver);
			System.out.println("jdbc driver 로딩 성공");
			
			// DB와 연결
			Connection con = DriverManager.getConnection(url, user, password);
			System.out.println("오라클 연결 성공 "+con);

			Statement stmt = con.createStatement();
			System.out.println(stmt);
	
			int result = stmt.executeUpdate(sql);
		
			System.out.println(result +"개 행이 삽입 성공..");
			
			
			
		} catch (ClassNotFoundException e) {
			System.out.println("jdbc driver 로딩 실패");
		} catch (SQLException e) {
			System.out.println("오라클 연결 실패");
		}
		
		
		
	}
}

아래는 이클립스 실행 결과이다.

아래는 SQL Developer의 tb_board 테이블의 출력결과 이다.

즉, 이클립스에서 SQL문을 작성하여 DB의 데이터를 직접 조작하는게 가능하다. DBMS의 기능과 java의 기능을 둘다 활용하고 데이터를 주고 받으며 데이터를 처리를 해줄 수 있기 때문이다. 국비강의에서는 주된 데이터 처리는 DBMS에서 다 가공을 한다고 했고, java는 이미 가공된 데이터를 어떻게 사용자에게 전달할지 전체적인 틀을 짜는데 사용된다고 하셨다.

 

'Java' 카테고리의 다른 글

2차원 배열 예제  (0) 2022.08.29
배열, for 문 예제  (0) 2022.08.29
If 문, If else , Switch 를 활용한 예제  (0) 2022.08.29
자바 환경설정  (0) 2022.08.29
    'Java' 카테고리의 다른 글
    • 2차원 배열 예제
    • 배열, for 문 예제
    • If 문, If else , Switch 를 활용한 예제
    • 자바 환경설정
    즐거운 개발계발
    즐거운 개발계발
    웹개발을 공부하며 기록을 남기기 위한 블로그 입니다. 댓글로 서로 소통하며 같이 공부해요 깃허브: https://github.com/klssh3126

    티스토리툴바