Back-End/Spring

[Spring DB][JDBC 이해] - JDBC와 ORM SQL Mapper에 대해서 알아보자.

얄루몬 2022. 6. 21. 06:07

💻본 포스팅은 '스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 김영한'님의 강의를 듣고 작성되었습니다.

https://inf.run/As6W

 

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

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

www.inflearn.com


목차
1. JDBC의 등장 배경
2. JDBC와 최신 데이터 접근 기술

1. JDBC의 등장 배경

클라이언트가 애플리케이션 서버를 통해서 데이터를 전달, 저장, 조회 할 때 애플리케이션 서버는 다음과 같이 동작한다.

애플리케이션 서버 동작

  1. 커넥션 연결(TCP/IP로 커넥션 연결)
  2. SQL 전달
  3. 결과 응답
  • 그러나 과거에는 표준 인터페이스가 없던 상황에 서버 동작의 과정을 데이터베이스 종류에 맞게 따로 각각 구현해주어야 했다 이런 문제를 해결하기 위해 JDBC를 만들어 해결했다.(과거에는 위의 동작을 모두 다 각각의 데이터베이스 종류에 따라 다르게 구현해주었어야 했다.)
  • 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API로 JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트 하는 방법을 제공한다.

표준 인터페이스 = JDBC

JDBC 드라이버 = 표준 인터페이스를 구현한 것으로 실질적으로 사용하는 부분이고 데이터베이스마다 다른 드라이버를 사용한다. 

JDBC의 장점

  • 데이터베이스 종류를 변경하더라도 애플리케이션 로직은 JDBC 표준 인터페이스에 의존하기 때문에 구현 라이브러리만 변경하면 된다.(추상화에 의존)
  • 개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달, 그 응답을 받는 방법을 학습해야 하는 문제가 사라졌다.

참고 - 표준화의 한계

JDBC만으로는 각각의 데이터베이스의 SQL 구현이 다를 수 있기에 이런 문제는 대부분 JPA를 사용해 해결할 수 있다.

2. JDBC와 최신 데이터 접근 기술

JDBC 직접 사용(과거)

애플리케이션 로직 -> JDBC

SQL Mapper(현재)

애플리케이션 로직 -> SQL Mapper -> JDBC

  • SQL Mapper
    • 장점
      • JDBC를 편리하게 사용하게 해준다.
      • SQL 응답 결과를 객체로 편리하게 반환해준다
      • JDBC의 반복 코드를 제거해준다.
    • 단점
      • 개발자가 SQL을 직접 작성해야 한다.
    • 대표 기술: 스프링 jdbcTemplate, MyBatis

ORM 기술

애플리케이션 로직 -> JPA -> JPA구현체(하이버네이트, JPA, 이클립스 링크 등..) -> JDBC

  • ORM 객체를 관계형 데이터베이스 테이블과 매핑해주는 기술이다. 이 기술 덕분에 SQL을 직접 작성하지 않고 ORM 기술이 개발자 대신 SQL을 동적으로 만들어 실행해준다.
  • 또한 ORM 기술은 각각의 데이터베이스마다 다른 SQL 사용 문제도 중간 해결해준다.
  • 대표 기술: JPA, 하이버네이트, 이클립스 링크
  • JPA는 자바 진영의 ORM 표준 인터페이스로 이것을 구현한 것은 하이버네이트와 이클립스 링크 등의 구현 기술이 있다.(하이버네이트를 거진 다 쓴다고 생각하면 된다.)
  • JPA(인터페이스) 하이버네이트(ORM 표준 인터페이스 구현체)

SQL Mapper VS ORM 기술

  • SQL Mapper
    • SQL 직접 작성해야 된다.(번거로움)
    • 그러나 SQL 배우는건 어렵지 않아 이것만 하면 나머지는 모두 다 SQL Mapper가 해준다.
  • ORM
    • 관련 공부를 해야 한다.(번거로움)
    • SQL 자체는 작성하지 않아도 돼 편리하다.

ORM과 JDBC의 차이점?

https://thefif19wlsvy.tistory.com/249

 

JDBC, JPA, Mybatis 차이점

들어가기 앞서 영속성에 대한 이해가 필요하다. 영속성(Persistence) 1. 데이터를 생성한 프로그램이 종료되더라도 사리지지 않는 데이터의 특성을 말한다. 2. 영속성을 갖지 않는 데이터는 단지 메

thefif19wlsvy.tistory.com

간단하게 포스팅을 읽어보니 ORM은 SQL 작성에 관여한 것들이라 생각하면 편하고(SQL문을 DB 종류에 상관 없이 자바 코드로 작성해서 대신 매핑해주는 개념.?) JDBC는 DB에 실질적으로 연결해야 할 때 접근해야 할 때 종류에 따라 상관 없이(중간 드라이버만 교체해주면 되는 개념이니까! 추상화에 의존한 것이니까!) 잘 연결될 수 있게 하는 것이라 생각하면 된다.

ORM 기술과 SQL Mapper는 결국 모두 JDBC를 사용한다!!!!!

  • 애플리케이션 로직 -> SQL Mapper -> JDBC
  • 애플리케이션 로직 -> JPA -> JPA구현체(하이버네이트, JPA, 이클립스 링크 등..) -> JDBC
  • 그렇기에 결국엔 JDBC에 대한 개념을 모두 잘 알고 있어야 한다!!! 그래야 문제가 발생해도 해결이 손쉬워진다!