[66해빗 페이백 챌린지] 15일차

tree·2023년 5월 16일
0

JDBC의 이해

  • 애플리케이션 서버와 DB는 다음의 과정을 통해 데이터를 주고 받는다.

    1. 커넥션 연결
      • TCP/IP를 사용해 커넥션을 연결한다.
    2. SQL 전달
    3. 결과 응답
  • 문제점

    • DB마다 커넥션을 연결하고 SQL을 전달하고 결과를 응답하는 코드가 모두 다르다.
      • DB를 변경하면 애플리케이션 서버의 DB 관련 코드를 모두 수정해야 한다.
      • 개발자가 DB에 맞는 코드를 매번 새로 학습해야 한다.
  • 해결책

    • 애플리케이션 서버는 DB 코드에 의존하지 말고 JDBC 표준 인터페이스에 의존하면 된다.
  • JDBC 표준 인터페이스

    • DB에 커넥션을 연결하고, SQL을 전달하고, 결과를 응답받는 방식을 표준화 해놓은 인터페이스.

    • 다음 3가지 기능을 표준 인터페이스로 정의해 제공.

      • java.sql.Connection
        • 커넥션 연결
      • java.sql.Statement
        • SQL을 담은 내용
      • java.sql.ResultSet
        • SQL 요청 응답
    • JDBC 드라이버

      • DB 밴더사는 자신들의 DB에 맞게 JDBC 인터페이스 구현체를 라이브러리로 제공하는데 이것을 JDBC 드라이버라고 한다.
  • JDBC 한계

    • JDBC 덕분에 많은 것이 표준화 되었지만, DB마다 SQL의 차이는 여전히 존재한다. 개발자는 이를 고려하여 SQL을 작성해야 한다. 하지만 JPA 기술은 각 DB에 알맞은 SQL을 자동으로 생성해준다.

JDBC와 최신 데이터 접근 기술

  • JDBC는 사용하기 복잡한 기술이다.

    • JDBC를 사용하기 편리하게 만들어주는 기술이 있는데 대표적으로 SQL Mapper, ORM이 있다.
  • SQL Mapper

    • SQL의 응답 결과를 객체로 매핑해주는 기술
    • 장점
      • JDBC의 반복적인 코드를 제거해준다.
        • 개발자가 직접 SQL의 결과값을 객체로 매핑해주면 반복적인 코드가 많이 생성되지만 SQL Mapper는 이런 작업을 대신해준다.
    • 단점
      • 개발자가 SQL을 직접 작성해야 한다.
    • ex
      • JdbcTemplate, SQL Mapper
  • ORM

    • 객체를 DB 테이블에 매핑해주는 기술
    • 장점
      • 개발자를 대신해서 SQL을 생성해준다.
      • DB마다 SQL의 차이가 존재하는데, 이것까지 반영해서 SQL을 생성해준다.
      • 개발자는 SQL을 신경쓰지 않아도 되니까 개발 생산성이 좋아진다.
    • 단점
      • 학습 곡선이 가파르다.
    • ex
      • JPA, 하이버네이트, 이클립스링크
        • JPA가 자바 진영의 ORM 표준 인터페이스이고 이를 구현한 것들이 하이버네이트, 이클립스링크 등이다.
  • SQL Mapper, ORM 모두 내부적으로는 JDBC를 사용한다.

0개의 댓글