ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JDBC
    김영한의 스프링/데이터베이스 2024. 8. 31. 20:38

    JDBC 등장 이유

     

    우리는 애플리케이션을 개발할 때 중요한 데이터는 데이터베이스에 대부분 보관을 한다. 클라이언트가 애플리케이션 서버를 통해 데이터를 조회하거나 저장하면 애플리케이션은 그림과 같이 데이터베이스를 사용한다.

    1. 커넥션 연결 : 주로 TCP/IP를 사용해서 커넥션을 연결
    2. SQL 전달 : 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달한다.
    3. 결과 응답 : DB는 받은 SQL을 실행하고 결과 값을 애플리케이션 서버에 전달한다.

    여기서 문제점이 있다. 예시로는 MySQL DB를 보여줬지만 데이터베이스 종류는 정말 많고 데이터베이스마다 커넥션 연결 방법, SQL 전달 방법, 결과 응답 방법이 모두 다르다. 이론적으로 DB를 바꾸게 되면 관련 데이터베이스 사용 코드도 바꿔야한다. 그리고 개발자는 DB를 바꾸면 해당 DB에 대해 커넥션 연결, SQL 전달 방법, 응답 받는 방법 등을 새로 학습해야한다. 하지만 우린 개발 경험상 SQL 문법 말고는 따로 공부해본적이 적을 것이다. 그 이유는 JDBC라는 자바 표준 덕분이다.

     

    JDBC 표준 인터페이스

    JDBC는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.

     

    자바는 JDBC 표준 인터페이스를 정의해두었다. 각 DB 회사는 해당 인터페이스를 구현하여 라이브러리를 제공한다. 이를 JDBC 드라이버라고 한다. 그래서 우리는 JDBC 인터페이스 사용법만 학습하면 어떤 DB든 모두 동일한 결과를 얻을 수 있다. 또한 애플리케이션 로직은 JDBC 표준 인터페이스에만 의존하기에 만약 다른 종류의 DB로 바꾸고 싶으면 JDBC 구현 라이브러리만 변경하면 된다. 하지만 한계는 DB마다 SQL, 데이터 타입 등의 일부 사용법이 다른데 이 부분까지 공통화는 되어있지 않다. 예를 들어 페이징 SQL은 각각의 데이터 베이스마다 다른데 우린 이 점을 공부하고 DB가 바뀌면 해당 DB에 맞는 방법을 적용한다. 하지만 이 점도 JPA를 사용하면 각각의 데이터베이스마다 다른 SQL을 정의해야하는 문제도 많이 해결 가능하다.

     

    JDBC와 최신 데이터 접근 기술

    JDBC는 출시된지 오래된 기술이고 사용하는 방법도 복잡하다. 그래서 JDBC를 직접 사용하는 것이 아닌 JDBC를 편리하게 사용하는 기술이 존재한다. 대표적으로 SQL Mapper와 ORM 기술로 나눌 수 있다.

    SQL Mapper

     

    SQL Mapper는 SQL 문장을 작성하고 데이터베이스와 상호작용하는데 도움을 주는 도구이다.

     

    특징

    • SQL 중심 접근 : SQL Mapper는 개발자가 직접 SQL 쿼리를 작성하도록 하며, 데이터베이스에 대한 세밀한 제어가 가능하다.
    • 자동 매핑 : SQL Mapper는 쿼리 결과를 객체에 자동으로 매핑해주는 기능을 제공한다. 예를 들어, 쿼리 결과의 각 행이 지정된 객체의 인스턴스로 매핑된다.
    • 유연성 : 개발자는 SQL를 직접 작성하기 때문에 쿼리 최적화, 복잡한 조인을 자유롭게 활용 할 수 있다.
    • 단점 : SQL문을 직접 작성해야하므로 코드가 길어지고 유지보수가 어려울 수 있다. 또한 데이터베이스 종속적인 코드를 많이 작성하게 된다.

    ORM 기술

    ORM은 객체를 관계형 데이터베이스 테이블과 매핑해주는 기술이다.

     

    특징

    • 객체 중심 접근 : ORM은 객체 지향적인 방식으로 데이터베이스에 접근 할 수 있도록 도와준다. SQL 쿼리를 직접 작성하지 않고도 객체를 통해 데이터 베이스 작업을 수행한다. 예를 들어 객체를 수정하기만 해도 수정 쿼리를 데이터 베이스에 전송한다.
    • 자동화된 매핑 : ORM 프레임워크가 클래스와 테이블, 필드와 컬럼 간의 매핑을 자동으로 처리한다.
    • 추상화 수준 : 데이터베이스에 대한 추상화 수준이 높아져 데이터베이스 종속성이 줄어든다. 쉽게 말해, DB마다 SQL문법이 다른데 이를 추상화하여 같은 코드라도 각 DB마다 자동으로 다른 SQL 문법으로 데이터베이스에 맞게 전송한다.
    • 단점 : 복잡한 쿼리나 성능 최적화에 제약이 있을 수 있다. 또한 편리한 반면에 쉬운 기술이 아니므로 학습 곡선이 있다.

    https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1

     

    스프링 DB 1편 - 데이터 접근 핵심 원리 강의 | 김영한 - 인프런

    김영한 | 백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니

    www.inflearn.com

     

     

Designed by Tistory.