💻본 포스팅은 '스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 김영한'님의 강의를 듣고 작성되었습니다.
스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의
백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의
www.inflearn.com
목차
1. JDBC의 등장 배경
2. JDBC와 최신 데이터 접근 기술
1. JDBC의 등장 배경
클라이언트가 애플리케이션 서버를 통해서 데이터를 전달, 저장, 조회 할 때 애플리케이션 서버는 다음과 같이 동작한다.
애플리케이션 서버 동작
- 커넥션 연결(TCP/IP로 커넥션 연결)
- SQL 전달
- 결과 응답
- 그러나 과거에는 표준 인터페이스가 없던 상황에 서버 동작의 과정을 데이터베이스 종류에 맞게 따로 각각 구현해주어야 했다 이런 문제를 해결하기 위해 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에 대한 개념을 모두 잘 알고 있어야 한다!!! 그래야 문제가 발생해도 해결이 손쉬워진다!
'Back-End > Spring' 카테고리의 다른 글
[Spring DB][커넥션풀과 데이터소스 이해] - 커넥션풀과 데이터소스란 무엇인가? (0) | 2022.06.22 |
---|---|
[Spring DB][JDBC 이해] - JDBC 사용 (0) | 2022.06.22 |
[Spring MVC2][API 예외처리] - 기본 예외처리, 서블릿 예외처리, 스프링이 지원하는 API 예외처리 (0) | 2022.06.02 |
[Spring MVC2][예외 처리와 오류 페이지] - 스프링이 지원하는 오류 페이지 처리 방식 (0) | 2022.05.30 |
[Spring MVC2][예외 처리와 오류 페이지] - 필터와 인터셉터 (0) | 2022.05.28 |