솔솔

[Java] JDBC란? 본문

나의보물들/Java

[Java] JDBC란?

솔솔하네 2024. 7. 31. 08:40
반응형

🍀 JDBC란?


 

Java에서 데이터베이스와 연결하고 상호작용할 수 있도록 해주는 API

 

 

🍀 JDBC의 주요 구성 요소


 

  • DriverManager: 데이터베이스 드라이버를 로드하고, 데이터베이스 연결을 관리.
  • Connection: 데이터베이스와의 연결
  • Statement: SQL 문을 실행
  • PreparedStatement: 사전 컴파일된 SQL 문을 실행하는 데 사용됨
  • ResultSet: SQL 쿼리의 결과를 저장하고 탐색할 수 있음

 

 

🍀 JDBC의 주요 구성 요소 상세

 


1. Connection

  - Connection 객체는 데이터베이스와의 연결을 나타내며 DriverManager를 통해 생성됨

import java.sql.Connection;

Connection conn = DriverManager.getConnection(url, user, password)

 

2. PreparedStatement

  - PreparedStatement 객체는 처음 생성될 때 SQL 문을 전달받고 컴파일됨(SQL 문법 검증 및 SQL 구문의 파싱) → 재사용될 때마다 동일한 SQL 구문을 반복적으로 실행할 수 있고 이 때 문법 검증 과정은 생략됨.

import java.sql.PreparedStatement;

// executeQuery() : SELECT 실행 후 ResultSet 반환 
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM emp WHERE empname = ?");
pstmt.setString(1, "mark");
int rowsInserted = pstmt.executeQuery();

// executeUpdate() : INSERT / UPDATE / DELETE 실행 후 INT 반환 
pstmt = con.prepareStatement(UPDATE emp SET empno = ? WHERE empname = ?);
pstmt.setString(1, 1);
pstmt.setString(2, "jany");
int rowsUpdated = pstmt.executeUpdate();

 

 

3. Statement

  - Statement 객체를 사용하여 기본적인 데이터베이스 작업(삽입, 조회, 업데이트, 삭제)을 수행

import java.sql.Statement;

// Statement 객체 생성
Statement stmt = conn.createStatement();

// executeUpdate() : INSERT / UPDATE / DELETE 실행 후 INT 반환 
int rowsInserted = stmt.executeUpdate("insert into dept values (15, '교육부', '상암')");

// executeQuery() : SELECT 실행 후 ResultSet 반환 
// ResultSet의 next 메서드를 사용하여 결과를 순차적으로 탐색
/* 커서가 속성부분(테이블의 헤더) 있다 생각하고 next로 다음 로우, 다음 로우 내려온다 생각하면 됨 
+--------+------------+----------+
| deptno | dname      | loc      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     15 | 교육부     | 상암     |
|     20 | RESEARCH   | DALLAS   |
|     30 | 영업       | CHICAGO  |
*/
rs = stmt.executeQuery("select * from dept");

 

 

 ☁️ 마이 띵킹 ☁️

MyBatis와 JPA는 각각의 방식으로 데이터베이스와 상호작용하는 프레임워크이다. 이 두 가지 프레임워크는 다르지만 결국 내부적으로는 JDBC를 사용하여 데이터베이스와 연결된다. JDBC에 대한 지식 없이도 MyBatis와 JPA를 활용하여 애플리케이션을 개발하는 것은 가능했지만 개발 중에 에러가 발생했을 때 JDBC에 대한 이해가 있으면 문제를 해결하는 데 큰 차이를 만들 수 있지 않을까 생각이들면서 오늘도 홧팅..!