데이터베이스

DB 접근 기술 이해하기 - JDBC, SQL Mapper, ORM

qwertyv 2024. 10. 25. 19:23

사담

데이터 파이프라인을 개선하기 위해 JPA에서 JDBC로 변환하면서
DB 접근하는 기술에 대해서 맥락과 이해없이 기계적으로만 사용하고 있다는 것을 깨달았다. 
JDBC는 자바에서 DB를 다루는 근본이기 때문에 이해부터 해야겠다고 판단했다.


 

JDBC

배경

- 과거에는 애플리케이션에서 DB에 접근하는 방식이 DB마다 달랐다.
- DB가 변경되면 애플리케이션 로직도 변경되어야 했다.
- 개발자는 DB마다 접근 기술을 학습해야 했다.
 

등장

- 이를 해결하기 위해 JDBC가 등장했다.
- JDBC는 자바에서 DB에 접근하는 표준 API이다.
 

해결

- 애플리케이션은 JDBC 추상화에만 의존한다.
- 개발자는 JDBC만 배우면 된다.
- DB를 변경해도 로직을 수정할 필요없이, 구현 라이브러리만 변경하면 된다.
 

한계

- DB마다 일부 사용법이 다른 곳이 있다. ex) 페이징


DB 접근 기술의 발전(1) - SQL Mapper

배경

- JDBC에 직접 사용할 경우에는 커넥션 연결, SQL 전달, 리소스 종료와 같은 코드들을 반복적으로 작성해야 했다.
 

등장

- JDBC조차 편리하게 사용하기 위해 "SQL Mapper"가 등장했다.
- SQL Mapper의 기술로는 JdbcTemplate, MyBatis가 있다.
 

해결

- JDBC의 반복적인 코드를 제거해준다.
- SQL 응답 결과를 객체로 반환해준다.


DB 접근 기술의 발전(2) - ORM

배경

- SQL Mapper을 사용하면 반복적인 코드는 제거하지만, SQL은 개발자가 직접 작성해야 했다.
 

등장

- 이것조차 불편하여 "ORM"이 등장했다.
- 객체를 관계형 데이터베이스 테이블과 매핑해주는 기술이다.
- ORM의 대표적인 기술로 자바 표준 인터페이스인 JPA, JPA를 구현한 Hibernate가 있다.
 

해결

- 반복적인 SQL을 작성하지 않아도 된다.
- DB마다 다른 SQL을 사용하는 문제도 해결해준다.