
JDBC란?
JDBC 동작 흐름

- JDBC는 Java 애플리케이션 내에서 JDBC API를 사용하여 데이터베이스에 접근하는 단순한 구조이다.
- JDBC API를 사용하기 위해서는 JDBC 드라이버를 먼저 로딩한 후 데이터베이스와 연결하게 된다.
JDBC 드라이버란?
JDBC 드라이버 타입
JPA 도 이 기술을 사용하여 구현되어 있다.
JDBC Driver 는 여러타입의 DB 와 연결할 수 있는 기능을 제공한다.

// JdbcApplication.java
package com.thesun4sky.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class JdbcApplication {
public static void main(String[] args) throws SQLException {
// 어플리케이션 실행 컨텍스트 생성
SpringApplication.run(JdbcApplication.class, args);
// 데이터베이스 연결정보
String url = "jdbc:h2:mem:test"; // spring.datasource.url
String username = "sa"; // spring.datasource.username
// connection 얻어오기
try (Connection connection = DriverManager.getConnection(url, username, null)) {
try {
// 테이블 생성 (statement 생성)
String creatSql = "CREATE TABLE USERS (id SERIAL, username varchar(255))";
try (PreparedStatement statement = connection.prepareStatement(creatSql){
statement.execute();
}
// 데이터 추가 (statement 생성)
String insertSql = "INSERT INTO USERS (username) VALUES ('teasun kim')";
try (PreparedStatement statement = connection.prepareStatement(insertSql){
statement.execute();
}
// 데이터 조회 (statement 생성 후 rs = resultSet 수신 & next() 조회)
String selectSql = "SELECT * FROM USERS";
try (PreparedStatement statement = connection.prepareStatement(selectSql){
var rs = statement.executeQuery();
while (rs.next()) {
System.out.printf("%d, %s", rs.getInt("id"), rs.getString("username"));
}
}
} catch (SQLException e) {
if (e.getMessage().equals("ERROR: relation \"account\" already exists")) {
System.out.println("USERS 테이블이 이미 존재합니다.");
} else {
throw new RuntimeException();
}
}
}
}
}