티스토리 뷰
※ JDBC API의 단점
- 쿼리 실행 이전과 이후에 많은 코드를 작성해야 한다. (Connection, statement, 연결 및 해제)
- 데이터베이스 로직에 있는 코드를 관리하기 위한 예외를 작성해야 한다.
- 여러 개의 데이터베이스로부터 코드 반복이라는 시간 낭비를 하게 된다.
- DB에 따라 일관성 없는 정보를 가진 채로 Checked Exception으로 처리한다.
- Connection과 같은 공유 리소스를 제대로 릴리즈 해주지 않으면 시스템의 자원이 바닥나는 버그를 발생시킨다
SQL Mapper

SQL Mapper는 개발자가 직접 SQL문을 작성해 데이터베이스 데이터를 다루는 Persistence Framework이다. 객체와 테이블 간의 관계를 직접 매핑하는 것이 아닌, SQL문을 실행해 쿼리 수행 결과를 어떤 객체에 매핑할지 바인딩 하는 방법이다. 따라서 DBMS에 종속적인 방법이라고 할 수 있다. 대표적으로 MyBatis가 있다.
장점
- JDBC를 사용할 때 발생하는 불편함을 줄일 수 있다.
- SQL이 비즈니스 로직과 분리되어 유지보수가 용이하다.
- 세부적인 SQL 변경시 편리하다.
- 기존의 SQL문법을 그대로 적용할 수 있어 새로운 기술을 학습하지 않아도 된다.
단점
- DBMS 별로 SQL 문법이 다르다.
- 개발자가 직접 SQL문을 작성해야 한다.
- DBMS 변경 시 SQL문을 재사용하기 어렵다.
- 객체와 테이블간 패러다임 불일치가 발생한다.
ORM

ORM 기술은 객체(Object)와 DB테이블을 매핑하여 데이터를 객체화하는 기술이다. ORM은 SQL문의 수행 결과를 매핑하는 것이 아닌 DB 테이블의 데이터 그 자체와 객체를 매핑한다. 또한 개발자가 직접 SQL을 작성하지 않아도 자동으로 SQL문을 만들어내기 때문에 DBMS에 종속적이지 않다. 대표적으로 JPA가 존재한다.
장점
- 개발자가 직접 SQL문을 작성하지 않아도 된다.
- SQL문이 아닌 클래스의 메서드를 통해 데이터베이스를 조작할 수 있다.
- DBMS에 종속적이지 않다.
단점
- 직접 SQL을 작성하는 것보다 성능이 떨어질 수 있다.
- 사용하기 위해서는 ORM 기술을 학습해야 하는 러닝커브가 존재한다.
- 메서드 호출로 DB 데이터를 조작하기 때문에 세밀함이 떨어진다. (JPQL 등을 이용하여 개선가능)
'Web > BackEnd' 카테고리의 다른 글
| 네트워크 기본 - IP란?, IP주소, PORT, DNS, URL, URI (0) | 2024.03.12 |
|---|---|
| 객체지향 프로그래밍 - OOP (0) | 2024.03.10 |
| 객체지향 프로그래밍 - SOLID 원칙 (0) | 2024.03.09 |
| JPA란? Spring Data JPA란? Hibernate란? (1) | 2024.01.02 |
| Mybatis란? (0) | 2024.01.02 |
