JDBC 개념과 등장배경, 더 나아갈 방향

zzangbae·2023년 4월 22일
0

스프링 DB

목록 보기
1/4

이 글은 개발 공부하는 "학생"의 글입니다. 참고용으로만 활용해주시길 바랍니다. 혹시 오류를 찾으셨다면 답글달아주시면 정말 감사드리겠습니다:)

공부한 곳 : 김영한 스프링 DB 핵심강의1

JDBC

  • Java Database Connectivity
  • 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.
  • 데이터베이스에서 자료를 쿼리하거나 업데이터하는 방법을 제공한다.
    (위키백과)

JDBC 등장 이유

  • 애플리케이션 개발은 아래와 같은 모양을 띄게 된다.

  • 클라이언트가 서버를 통해 데이터를 저장하거나 조회하면, 서버는 데이터베이스와 아래와 같은 과정을 진행한다.

  • 그런데 이 때, 문제는 DB마다 커넥션을 연결하는 방법, SQL 전달 방법, 결과 응답 받는 방법이 모두 다르다.

    여기에 따른 2가지 큰 문제
    1. 데이터베이스를 변경하면, 애플리케이션 서버에 개발된 데이터베이스 사용코드를 모두 변경해야함
    2. 개발자의 learning curve - 모든 DB에 대한 커넥션 연결, SQL, 결과 응답을 공부해야함

이러한 문제때문에 "표준"이 필요하게 되었고, JDBC가 등장하게 되었다.

JDBC 표준 인터페이스

JDBC는 연결, SQL을 담은 내용, SQL요청응답을 인터페이스로 정의해서 제공한다.

  • java.sql.Connection - 연결
  • java.sql.Statement - SQL을 담은 내용
  • java.sql.ResultSet - SQL요청 응답

JDBC 표준 인터페이스를 통해서 개발을 하면 된다. 하지만 인터페이스는 구현체가 있어야 기능이 동작 할 수 있다. 이 때, 구현체는 각 DB벤더(회사)에서 라이브러리로 제공한다. -> JDBC 드라이버.
ex) MySQL JDBC 드라이버, Oracle JDBC 드라이버

-> DB에 따라서 해당 회사에서 제공하는 Driver library를 활용하면 된다.

-> Spring initializer의 디펜던스를 통해 여러 드라이버가 있음을 확인할 수 있다.

그래도 부족한 "표준"

JDBC가 많은 부분을 편리하게 해주었지만, DB마다 일부부분이 다르다.
SQL의 경우 표준화를 시키려는 노력이 있었지만, 차이는 여전히 존재한다.
따라서, JDBC 코드는 유지시키더라도, DB가 바뀔 경우에 SQL은 다시 바꿔야한다.
-> 차 후에 정리할 것이지만, 이 문제를 해결한 것이 JPA(Java Persistence API)이다.

profile
배우는 게 너무 즐거운 개발자

0개의 댓글