-
JDBC란 무엇일까?Java 2018. 8. 1. 00:36반응형
Java를 공부하다보면 자연스레 JDBC 에 대한 내용도 공부해야하는데
JDBC란 무엇일까??
0. SQL에 대한 간단한 내용
- SQL : Structured Query Language, 데이터베이스 제어 언어
1) DML : Data Manipulation Language
① INSERT 정보 저장 ( Create )
② SELECT 정보 조회 ( Read )
③ UPDATE 정보 수정 ( Update )
④ DELETE 정보 삭제 ( Delete )
2) DDL : Data Definition Language
① CREATE 테이블 생성
② DROP 테이블 삭제
③ ALTER 테이블 구조 수정
3) DCL : Data Control Language
① COMMIT : 정보를 실제 db에 저장
② ROLLBACK : 작업을 취소
1. JDBC란?
- Java Database Connectivity
- 자바 프로그램이 데이터베이스와 연결되어 데이터를 주고 받을 수 있게 해주는 프로그래밍 인터페이스입니다.
2. JDBC의 역할
- 통역자의 역할 : 응용프로그램과 DBMS간의 통신을 중간에서 번역해주는 역할을 합니다.
3. java.sql Package
1) java.sql.Driver
- DB와 연결하는 Driver class를 만들 때 반드시 implements 해야 하는 interface로 JDBC 드라이버의 중심이 되는 Interface 입니다.
2) java.sql.Connection
- 특정 데이터베이스와 연결정보를 가지는 Interface 입니다.
- DriverManager 로부터 Connection 객체를 가져옵니다.
3) java.sql.Statement
- SQL query문을 DB에 전송하는 방법을 정의한 Interface 입니다.
- Connection을 통해 가져옵니다.
4) java.sql.ResultSet
- SELECT 구문 실행 결과를 조회할 수 있는 방법을 정의한 Interface 입니다.
5) java.sql.PreparedStatement
- Statement의 하위 Interface 입니다.
- SQL문을 미리 컴파일 하여 실행 속도를 높입니다.
6) java.sql.CallableStatement
- PreparedStatement의 하위 Interface 입니다.
- DBMS의 Stored procedure을 호출합니다.
4. JDBC 개발단계
1) JDBC Driver loading
- 데이터베이스 벤더에 맞는 드라이버를 호출합니다.
- 데이터베이스와의 연결을 위해 드라이버 로딩합니다.
2) Connection
- DB와 연결을 위해 URL과 계정정보가 필요합니다.
- 연결 메소드로는 DriverManager.getConnection(url, id, pwd) : Connection 입니다.
3) Statement / PreparedStatement
- SQL 구문을 정의하고 변경 될 값은 치환문자(?)를 이용해 쿼리 전송 전에 값을 setting 합니다.
4) executeUpdate() or executeQuery()
- executeUpdate() 는 SQL Query문이 INSERT, DELETE, UPDATE의 경우에 사용합니다. 반환값의 타입은 int형입니다.
- executeQuery() 는 SQL Query문이 SELECT의 경우에 사용합니다. 반환값의 타입은 ResultSet 입니다.
5) ResultSet ( SELECT 의 경우 )
- 데이터베이스 조회 결과집합에 대한 표준입니다.
- next()를 통해 DB의 table 안의 row한 줄을 불러옵니다.
- getString(), getInt() 를 통해 한 행의 특정 Column값을 가져 옵니다.
6) close ( Connection, Statement, ResultSet )
- Connection, Statement, ResultSet에 대해 close를 해줍니다.
▶ JDBC의 소스코드는 다음 글에서 정리하여 포스팅하겠습니다.^^
반응형'Java' 카테고리의 다른 글
객체 직렬화(Serialization) / 역직렬화(DeSerialization)란?? (0) 2018.08.18 Scanner vs BufferedReader (0) 2018.08.09 Java SE 환경설정하는 방법 (0) 2018.07.29 자바의 예외(Exception)란 무엇일까? (0) 2018.07.26 객체의 관계들은 어떤것이 있을까? (0) 2018.07.25