김영한의 스프링 DB 1편(JDBC)

2025. 1. 14. 21:32·김영한의 스프링 DB 1편

JDBC란 무엇인가?

  • JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API다.
  • JDBC 는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. - 위키백과
  • 일반적으로 서버를 DB에 연결해서 사용할 때는 1. 커넥션 연결, 2. SQL 전달, 3. 결과 응답 이 세가지의 과정을 일반적으로 진행을 함.
  • 하지만, DB마다 각기 방식이 매우 달라 사용하는 DB가 달라지거나 하면 이 과정이 모두 달라져야 하는 문제가 생길 수 있음.
  • 이러한 문제를 해결하기 위해 JDBC라는 자바 표준이 등장함.
  • JDBC의 대표적인 3가지 표준 인터페이스는 아래와 같고, 이 3가지에 대해 DB별로 구현체가 존재함.
    • java.sql.Connection - 연결
    • java.sql.Statement - SQL을 담은 내용
    • java.sql.ResultSet - SQL 요청 응답

 

JDBC 드라이버에 대해 설명하시오

  • JDBC의 표준 인터페이스에 대해 구현체를 라이브러리의 형태로 각 DB사에서 제공하는 것이 JDBC 드라이버.
  • 위 그림처럼 MySQL드라이버가 DB와 서버 사이에서 표준에 맞게 작업을 진행해주고, MySQL이 아니라 Oracle과 같은 DB로 변경되면 MySQL 드라이버만 Oracle 드라이버로 변경되면 됨.
  • 따라서, 개발자는 JDBC 표준 인터페이스만 학습하면 됨.
  • 하지만 SQL은 아직 표준화되지 않아 DB마다 SQL은 조금 다를 수 있음.

 

SQL Mapper에 대해 설명하시오

  • JDBC를 사용하면 상당히 복잡하기 때문에 SQL Mapper를 통해 여러 편의 기능을 제공받을 수 있음.
  • SQL Mapper는 SQL 응답 결과를 객체로 편리하게 변환해줌
  • JDBC의 반복 코드를 제거해줌.
  • 하지만 여전히 SQL을 직접 작성해야하는 문제가 있음.
  • 대표 기술로는 스프링 JdbcTemplate, Mybatis가 있음.

 

ORM 기술에 대해 설명하시오

  • ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어에서 객체와 데이터베이스의 테이블 간의 매핑(연결)을 자동화하는 기술
  • 반복적인 SQL을 직접 작성할 필요 없고, ORM 기술이 동적으로 SQL을 만들어 줌.
  • 데이터베이스가 서로 SQL이 다른 문제점을 해결해 줄 수 있음.
  • JPA는 자바 진영의 ORM 표준 인터페이스고, 이걸 구현한 기술이 하이버네이트, 이클립스링크

 

SQL Mapper와 ORM 의 차이에 대해 설명하시오

  • SQL Mapper는 SQL만 직접 작성하면 나머지 번거로운 일은 SQL Mapper가 대신 해결해줌.
  • SQL Mapper는 SQL만 작성할 줄 알면 금방 배워서 사용 가능
  • ORM은 SQL을 작성하지 않아도 되서 개발 생산성이 매우 높아짐.
  • ORM은 쉬운 기술이 아니라 실무에서 사용하려면 깊은 학습이 필요

'김영한의 스프링 DB 1편' 카테고리의 다른 글

김영한의 스프링 DB 1편(자바 예외 처리)  (2) 2025.01.17
김영한의 스프링 DB 1편(트랜잭션)  (4) 2025.01.16
'김영한의 스프링 DB 1편' 카테고리의 다른 글
  • 김영한의 스프링 DB 1편(자바 예외 처리)
  • 김영한의 스프링 DB 1편(트랜잭션)
5jyan5
5jyan5
  • 5jyan5
    jyan
    5jyan5
  • 전체
    오늘
    어제
    • 분류 전체보기 (242)
      • 김영한의 스프링 핵심 원리(기본편) (8)
      • 김영한의 스프링 핵심 원리 - 고급편 (11)
      • 김영한의 스프링 MVC 1편 (1)
      • 김영한의 스프링 DB 1편 (3)
      • 김영한의 스프링 MVC 2편 (3)
      • 김영한의 ORM 표준 JPA 프로그래밍(기본편) (9)
      • 김영한의 스프링 부트와 JPA 활용2 (2)
      • 김영한의 실전 자바 - 중급 1편 (1)
      • 김영한의 실전 자바 - 고급 1편 (9)
      • 김영한의 실전 자바 - 고급 2편 (9)
      • Readable Code: 읽기 좋은 코드를 작성.. (2)
      • 김영한의 실전 자바 - 고급 3편 (9)
      • CKA (118)
      • 개발 (37)
      • 경제 (4)
      • 리뷰 (1)
      • 정보 (2)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      김영한
      자바
      @discriminatorcolumn
      Thread
      조회 성능 최적화
      @within
      프록시 팩토리
      빈 후처리기
      JPQL
      @discriminatorvalue
      jdk 동적 프록시
      단방향 맵핑
      양방향 맵핑
      Target
      버퍼
      락
      고급
      WAS
      페치 조인
      hibernate5module
      reentarantlock
      requset scope
      jpq
      @args
      cglib
      프록시
      스레드
      typequery
      log trace
      gesingleresult
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.2
    5jyan5
    김영한의 스프링 DB 1편(JDBC)
    상단으로

    티스토리툴바