[Java] 심화 - DB 연결(JDBC)

이지연·2025년 12월 27일

개요

아래의 내용은 java_grammer 레파지토리 C09NetWorking 디렉터리에 저장되어있는 내용을 정리함

Java에서 MariaDB 연결 및 JDBC 기본 사용법을 다룸. 웹서버와 DB 연동의 기초가 되는 기술이다.


JDBC를 통한 DB 연결

준비사항

MySQL/MariaDB JDBC 드라이버(mysql-connector-java.jar)를 IntelliJ 라이브러리에 추가해야 함.

  • 하단 zip 파일 다운로드 및 설치
  • IntelliJ 내 라이브러리 추가

Java-DB 연결 기술 스택

  1. JDBC: 가장 기본 기술 (JPA/MyBatis의 근간)
  2. MyBatis: SQL 매퍼 (XML/SQL 중심)
  3. JPA: 객체-관계 매핑 (Entity 클래스 중심)

연결 설정

String url = "jdbc:mysql://localhost:3306/board?useSSL=false";
Connection conn = DriverManager.getConnection(url, "root", "test1234");
  • jdbc:mysql://: MySQL 프로토콜 (MariaDB는 jdbc:mariadb:// 사용 가능)
  • localhost:3306: DB 서버 주소/포트
  • board: 데이터베이스명
  • useSSL=false: 개발환경용 SSL 비활성화

데이터 조회 과정

Statement와 ResultSet 사용

Statement st = myConnection.createStatement();
ResultSet rs = st.executeQuery("select * from post");

ResultSet 동작 원리

  • Cursor 개념: 데이터 읽기 위치 지표 (처음엔 컬럼명 위치)
  • next(): 다음 행으로 이동 (null 반환 시 종료)
  • getInt("id"), getString("title"): 컬럼명으로 데이터 추출

조회 코드

while (resultSet.next()) {
    System.out.println("id : " + resultSet.getInt("id"));
    System.out.println("title : " + resultSet.getString("title"));
    System.out.println("contents : " + resultSet.getString("contents"));
}

현재 내 데이터베이스와 일치하는 데이터 출력하는 모습 확인

전체 흐름 정리

1. DriverManager.getConnection() → DB 연결
2. createStatement() → Statement 생성
3. executeQuery() → SELECT 실행 → ResultSet 반환
4. while(rs.next()) → 행 단위 데이터 처리
5. 자동으로 Connection/Statement/ResultSet close

실무 연결 예시 (웹서버 + DB)

C02WebServerGet에서 DB 연동 시나리오

http://localhost:8080?id=1
↓
id=1 조건으로 post 테이블 조회
↓
"hello world java - [title]" 응답

주의사항

드라이버 의존성

<!-- Maven 사용 시 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

리소스 정리 (생략됨)

// 실제론 try-with-resources 사용 권장
try (Connection conn = DriverManager.getConnection(url, user, pass);
     Statement st = conn.createStatement();
     ResultSet rs = st.executeQuery("SELECT * FROM post")) {
    // 조회 로직
}

다음 단계: PreparedStatement(매개변수화 쿼리), INSERT/UPDATE, ConnectionPool 적용

post 테이블 가정 구조

CREATE TABLE post (
    id INT PRIMARY KEY,
    title VARCHAR(100),
    contents TEXT
);
profile
Eazy하게

0개의 댓글