JDBC (Java DataBase Connectivity)
: 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API
: 다양한 종류의 RDBMS에 접근시 사용되는 자바 표준 SQL 인터페이스
: 모든 DBMS에서 공통적으로 사용할 수 있는 인터페이스와 클래스로 구성
: 실제 구현 클래스는 각 DBMS 벤더가 구현했기 때문에 거의 모든 벤더가 JDBC 드라이버 제공
: 각 DBMS에 맞는 JDBC 드라이버를 호출하여 사용
JDBC 드라이버
: JDBC 인터페이스를 구현한 클래스 파일 모음 (jar 파일)
: 각 DBMS 벤더에서 제공되는 구현 클래스
: DB와 연결되는 드라이버 클래스 생성 시, 반드시 implements해야 하는 인터페이스
: Class.forName("com.mysql.cj.jdbc.Driver");
JDBC의 역할
: 응용프로그램과 DBMS간의 통신을 중간에서 번역해주는 역할 담당
: SQL문을 DBMS에 전달하고, 결과값을 응용프로그램에 전달
JDBC의 장점
: 사용하는 RDBMS에 독립적인 프로그래밍 가능
: 쉽게 RDBMS의 교체가 가능
: 자바는 단순히 문자열로 쿼리를 전달할 뿐이고 해석은 각 벤더가 구현 DRIVER에서 담당하기 때문에
: 표준 SQL 뿐 아니라 각 JDBC Driver를 제공하는 DBMS 벤더별로 최적의 성능 발휘 가능
: 벤더 종속적인 SQL도 처리 가능
JDBC 연동 과정
(1) 필요한 패키지 import
(2) JDBC Driver Load
(3) Connection 객체 생성
(4) Statement or PreparedStatement 생성 (SQL 쿼리문을 DB에 전송하는 인터페이스)
(5) 쿼리 수행 (sql 문 실행)
(6) ResultSet 객체 생성 (구문 실행 결과를 받아오는 인터페이스)
(7) 모든 객체 close() (접속 종료)
: 반환 순서 (ResultSet -> Statement ->Connection)
1. 패키지 import
: JDBC는 java.sql 패키지에 포함되어 있음
: import java.sql.DriverManager;
: import java.sql.Connection; ….
: JDBC는 DB 접속을 위해 한 개의 클래스와 두 개의 인터페이스 사용
- 클래스 : java.sql.DriverManager
- 인터페이스 : java.sql.Driver, java.sql.Connection
2. JDBC 드라이버 로드
: Java에서 MySQL Driver를 사용하기 위해 드라이버를 JVM에 로딩
: DB와 연결되는 드라이버 클래스 생성 시, 반드시 implements해야 하는 인터페이스
: Class.forName(“com.mysql.cj.jdbc.Driver”);
3. Connection 객체 생성
: DriverManager 클래스의 static 메서드 getConnection() 메서드를 이용하여 Connection 객체 얻어옴
: MySQL 서버 실제 연결
: Connection 객체가 생성되면 DBMS 접속 성공
: DriverManager.getConnection(String url, String user, String password)
4. Statement 객체 생성
: SQL 쿼리문을 DB에 전송하기 위한 인터페이스
: Connection 인터페이스의 createStatement() 메서드를 이용하여 객체 생성
: Statement 또는 PreparedStatement 객체 사용
: PreparedStatement pstmt = con.prepareStatement(sql);
(+) Statement 와 PreparedStatement의 차이점
5. 쿼리 수행
: SQL 전송에 사용되는 메서드에는 executeQuery()와 executeUpdate() 존재
: 위 두 메서드의 차이점 = SQL 문 실행 결과가 다름
- executeUpdate()
: 쿼리문이 insert / update / delete 구문인 경우 사용
: 영향을 받은 행의 수 반환
: 쿼리문 수행 후 반환된 결과값이 0인 경우 작성한 쿼리문이 성공적으로 수행되지 않았음을 의미
- executeQuery()
: 쿼리문이 select 구문인 경우 사용
: select문 수행 결과에 해당되는 여러 행들을 ResultSet 객체로 반환
6. ResultSet
: select문 수행 결과 조회가 가능한 인터페이스
: next() 메서드를 이용하여 논리적 커서를 이동 -> 각 열의 데이터를 바인딩해 옴
: while문과 함께 사용하여 rs.next() 호출 결과가 true인 동안 반복하며 다음 행의 데이터 가져옴
= 다음 행이 존재하지 않을 때까지 행의 데이터를 가져옴
: cursor : 다음 열로 이동
: next() : 다음 행으로 이동
7. 모든 객체 close()
: 자원 반납
: 반환 순서 (ResultSet -> Statement ->Connection)
JDBC 연동 구현 예제
JDBC 연동 구현 예제
JDBC 관련 기본 개념 및 연동 과정은 아래 링크 참조 https://olli2.tistory.com/4?category=985935 JDBC 개념 및 연동 과정 JDBC (Java DataBase Connectivity) : 자바에서 데이터베이스에 접속할 수 있도록 하..
olli2.tistory.com
'Backend > Java' 카테고리의 다른 글
제네릭 (Generic) (0) | 2021.11.29 |
---|---|
DTO DAO 구현 예제 (0) | 2021.11.26 |
JDBC 연동 구현 예제 (0) | 2021.11.26 |
Statement VS PreparedStatement (0) | 2021.11.26 |
DAO DTO VO 개념 (0) | 2021.11.25 |