[Database] 01. JDBC

2024. 11. 13. 15:56·공부/Spring Boot

JDBC란?

JDBC란 Java에서 데이터베이스와 상호작용하기 위한 저수준 API이며 해당 API를 통해 Java에서 여러 데이터베이스와 연결하여 SQL 쿼리를 실행하고 결과를 처리할 수 있게 해주는 표준 인터페이스 이다.


JDBC 주요 특징

1. 저수준 데이터베이스 접근

SQL 쿼리를 직접 작성하여 실행하기 때문에, DB와 해당 DB의 SQL 언어에 대한 이해가 필요하다.

2. SQL 중심 프로그래밍

모든 데이터 조작은 SQL 쿼리를 통해 이루어지며, 쿼리 결과를 ResultSet으로 받아와서 개발자가 직접 Java 객체에 매핑해주어야 한다.

3. 커넥션 관리

JDBC는 데이터베이스 연결을 위해 Connection 객체를 사용하며, 개발자가 직접 이 연결을 직접 생성하고 닫는 등의 처리 및 관리를 해주어야 한다.(잘못된 커넥션 관리로 커넥션 누수가 발생할 수 있다.)

import java.sql.*;

public class JdbcExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";

        try (Connection conn = DriverManager.getConnection(url, username, password);
             Statement stmt = conn.createStatement()) {

            String query = "SELECT * FROM users";
            ResultSet rs = stmt.executeQuery(query);

            while (rs.next()) {
                System.out.println("User ID: " + rs.getInt("id"));
                System.out.println("User Name: " + rs.getString("name"));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}


JDBC 주요 장단점

장점

1. 직접적인 데이터베이스 접근

쿼리를 직접 작성하여 사용하기 때문에 DBMS 특화 기능(MySQL의 LIMIT, Oracle의 ROWNUM 등)을 자유롭게 사용할 수 있다.

2. 높은 성능

저수준 API 이기 때문에, 추가적인 추상화 계층이 없어 빠른 성능을 발휘한다.

3. DBMS 독립성

표준화된 API를 제공하여 jdbc 드라이버만 맞게 설정하면, 별다른 코드 변경 없이 다른 DBMS로 전환할 수 있다.

단점

1. 반복적인 코드

DB 연결, SQL 쿼리 작성, 결과 처리, 트랜잭션 관리 등의 반복적인 코드가 발생할 수 밖에 없다.

2. 객체 관계 매핑 문제

스키마와 Java 객체간의 매핑을 수동으로 처리해야 하기 때문에 예외 발생, 유지보수성 복잡성이 증가한다.

3. 트랜잭션과 리소스 관리 부담

JDBC는 트랜잭션을 수동으로 관리해야 하며, Conenction, ResultSet 등의 리소스를 직접 관리해야 한다.

4. DBMS 종속성

jdbc 드라이버를 통해 표준화된 API로 사용은 가능하지만, SQL 쿼리는 각 DB에 맞게 직접 작성해야하기 때문에 종속성이 발생할 수 있다.

저작자표시 비영리 변경금지 (새창열림)

'공부 > Spring Boot' 카테고리의 다른 글

[Database] 03. QueryDSL  (1) 2024.11.15
[Database] 02. JPA  (0) 2024.11.14
[Spring Batch] 01. Spring Batch 기본 개념  (0) 2024.11.13
[스프링 부트 공부 일지] 4. 웹 어플리케이션 서버 구축하기 (2)  (0) 2022.12.22
[스프링 부트 공부 일지] 4. 웹 어플리케이션 서버 구축하기 (1)  (0) 2022.12.21
'공부/Spring Boot' 카테고리의 다른 글
  • [Database] 03. QueryDSL
  • [Database] 02. JPA
  • [Spring Batch] 01. Spring Batch 기본 개념
  • [스프링 부트 공부 일지] 4. 웹 어플리케이션 서버 구축하기 (2)
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    react
    리액트
    REST API
    티스토리챌린지
    MSA
    Java
    OpenAI API
    Entity
    spring boot
    예외
    쿠버네티스
    인스타그램
    오블완
    스프링 부트
    mapstruct
    클러스터
    백준
    chat GPT
    스프링부트
    클론코딩
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
[Database] 01. JDBC
상단으로

티스토리툴바