CS
  • CS-Study
  • database
    • B-Tree와 B+Tree
    • DB JOIN
    • DB Lock
    • DB 트래픽
    • DBCP (DB Connection Pool)
    • Flyway
    • Message Broker
    • MySQL InnoDB 스토리지 엔진
    • MySQL 엔진 아키텍처
    • RDB와 NoSQL
    • Redis
    • SQL Injection
    • 스키마 (Schema)
    • Table Scan과 Index Scan
    • Apache Kafka
    • Key
    • 뷰 (View)
    • 인덱스
    • 정규화
    • RDBMS, NoSQL의 클러스터링/리플리케이션 방식
    • 트랜잭션(Transaction)
    • 트랜잭션의 격리성(Transaction Isolation)
    • 프로시저와 트리거
    • DB 정규화 (Normalization)
  • etc
    • MSA
    • REST, REST API, RESTful
    • SOLID 원칙
    • TDD (Test-Driven Development)
    • 서버리스
    • 컨테이너와 도커
  • java
    • Collections
    • Garbage Collection
    • Generic
    • JDBC
    • Java Virtual Machine(JVM)
    • Java Thread
    • Java8 vs Java11 vs Java17
    • 객체지향 프로그래밍 OOP (Object Oriented Programing)
    • Optional
    • RxJava(Reactive Programming)
    • 문자열(String & StringBuffer & StringBuilder)
    • Synchronized
    • Virtual Thread
    • Wrapper Class
    • Equals()와 Hashcode()
    • final
    • Jackson 라이브러리
    • 리플렉션(Reflection)
    • static class와 static method
    • 스트림(Stream)과 람다(Lambda)
    • 스프링 프레임워크에서 사용되는 디자인 패턴
    • 예외처리(Exception)
    • Java Annotation
    • 추상클래스와 인터페이스
  • network
    • 3-way handshake
    • 4-way Handshake
    • DHCP(Dynamic Host Configuration Protocol)
    • DMZ(DeMilitarized Zone)
    • DNS(Domain Name System)
    • HTTP Method
    • HTTP 버전 비교
    • HTTP status code
    • HTTP
    • IP Address
    • Mutiplexing & Demultiplexing
    • OSI 7계층
    • SOP, CORS
    • TCP와 UDP
    • XSS와 CSRF
    • gRPC
    • Stateless와 Connectionless
    • 라우터 Router
    • 로드밸런서(Load Balancer)
    • 브라우저에 URL입력시 네트워크 상 일어나는 일
    • 서브넷 마스크, 게이트웨이
    • 웹 소켓과 소켓 통신
    • 쿠키(Cookie)와 세션(Session)
  • operating-system
    • IPC (Inter Process Communication)
    • 인터럽트
    • TLB
    • 스레싱 Thrashing
    • Thread Pool, Fork-Join
    • Thread Safe
    • 프로세스
    • 가상 메모리
    • 데드락 (DeadLock, 교착 상태)
    • 동기/비동기 & 블로킹/논블록킹
    • 동기화(Synchronization)
    • 메모리 할당과 단편화
    • 뮤텍스와 세마포어, 모니터
    • 세그먼테이션과 페이징
    • 운영체제
    • 캐시 메모리
    • Context switching(문맥 교환)
    • 컴파일
    • 파일 시스템
    • 페이지 교체 알고리즘(Page Replacement Algorithm)
    • 프로세서 스케줄링 알고리즘
    • 프로세스 주소 공간
  • spring
    • @Transactional
    • AOP(Aspect-Oriented Programming)
    • DTO, DAO, VO, Entity
    • DispatcherServlet
    • Hibernate, JPA, Spring Data JPA
    • Ioc와 DI
    • JPA 연관관계 맵핑
    • N+1 Problem
    • ORM
    • Persistence Context
    • SQL Mapper vs ORM vs QueryBuilder
    • Servlet Filter와 Spring Interceptor
    • Servlet
    • Spring MVC와 Spring Boot
    • Tomcat
    • WebFlux
Powered by GitBook
On this page
  • JDBC
  • JDBC API
  • JDBC 드라이버
  • JDBC 동작 흐름
  • Ref
  1. java

JDBC

JDBC (Java Database Connectivity)

JDBC

배경

  • 데이터베이스 접근의 표준화를 위해 등장

  • JDBC 존재 전 데이터베이스마다 존재하는 고유한 API를 직접 사용함

    • 데이터베이스 교체 시 기존의 코드 모두 수정해야하는 불편함 존재

개념

  • Java 프로그램이 데이터베이스에 접근할 수 있게 해주는 기술

    • Java를 이용한 데이터베이스 접속과 SQL 문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약

    • Java 프로그램 내에서 SQL문을 실행하기 위한 자바 API

    • JAVA는 표준 인터페이스인 JDBC API를 제공

특징

  • JDBC는 데이터베이스 독립성을 유지

    • 이를 통해 다양한 데이터베이스 시스템(MySQL, Oracle, SQL Server 등)과 상호 작용가능

JDBC API

개념

  • Java에서 데이터베이스와 상호 작용하기 위한 표준 인터페이스

  • Java 애플리케이션이 데이터베이스 작업을 수행할 수 있게 해주는 인터페이스를 정의

    • 이를 통해 데이터베이스와의 통신을 추상화 함

특징

  • JDBC API에서 제공하는 표준 인터페이스는 대부분 인터페이스로 구현 됨

    • DBMS 종류에 상관없이 사용 가능하도록하기 위함

    • 각 DBMS 회사에서는 이 인터페이스들을 구현한 클래스 파일들을 JDBC 드라이버로 묶어서 제공

  • Java 어플리케이션과 실제 데이터베이스가 연동하기 위해서는 각 DBMS 종류에 맞는 드라이버를 다운받아 사용

JDBC 표준 인터페이스

JDBC는 표준 인터페이스(java.sql Package)를 정의하여 제공

  • java.sql.Driver

    • 데이터베이스 드라이버를 로드하고 연결을 설정하는 역할

  • java.sql.Connection

    • 특정 데이터베이스와 연결정보를 가지는 인터페이스

    • DriverManager로부터 Connection 객체를 가져옴

    • 데이터베이스 연결을 나타내며, 데이터베이스와의 통신을 관리

  • java.sql.Statement

    • SQL query문을 DB에 전송하는 방법을 정의한 인터페이스

    • Connection을 통해 가져옴

    • SQL 문을 실행하고 결과를 반환받는 데 사용

  • java.sql.ResultSet

    • SELECT 구문 실행 결과를 조회할 수 있는 방법을 정의한 인터페이스

    • 쿼리 결과를 테이블 형식으로 제공

    • 데이터베이스에서 검색된 데이터를 읽는 데 사용

  • java.sql.PreparedStatement

    • SQL 문을 미리 컴파일하여 실행 성능을 향상시키는 데 사용

JDBC 드라이버

  • DBMS와 통신을 담당하는 자바 클래스

  • 각 DBMS를 위한 JDBC Driver를 통해 서로 다른 DBMS 사용 가능

    • DBMS별로 알맞은 JDBC드라이버 필요

JDBC 동작 흐름

전체 흐름

  • Java 애플리케이션 내에서 DB에 접근하는 구조

    • 이때 JDBC API 이용

    • JDBC API 를 이용하기 위해선 JDBC 드라이버로딩 필요

세부 흐름

  • JDBC 드라이버 로딩

    • 사용하고자 하는 JDBC 드라이버 로딩

    • JDBC 드라이버는 DriverManager 클래스를 통해 로딩 됨

  • Connection 객체 생성

    • JDBC 드라이버가 정상적으로 로딩됐을때, DriverManager를 통해 Connection 객체 생성

      • Connection 객체: 데이터베이스와 연결되는 세션

  • Statement 객체 생성

    • Statement 객체

      • 작성된 SQL 쿼리문을 실행하기 위한 객체

      • 정적 SQL 쿼리 문자열을 입력으로 가짐

  • Query 실행

    • 생성된 Statement 객체를 이용해 입력한 SQL 쿼리 실행

  • ResultSet 객체로부터 데이터 조회

    • 실행된 SQL 쿼리문에 대한 결과 데이터 셋

  • ResultSet, Statement, Connection 객체들의 Close

    • JDBC API를 통해 사용된 객체들은 생성된 객체들을 사용한 순서의 역순으로 Close

Ref

PreviousGenericNextJava Virtual Machine(JVM)

Last updated 10 months ago

Connection객체를 생성하는 작업은 비용이 많이 들기에 이용

[Java] JDBC란 무엇인가? - Java Database Connectivity
Connection Poo