≣ 목차
데이터베이스와의 효율적인 상호작용은 개발자들에게 중요한 과제입니다. 이를 해결하기 위해 SQL Mapper와 ORM(Object-Relational Mapping) 두 가지 주요 도구가 사용됩니다. 이 글에서는 SQL Mapper와 ORM이 무엇인지, 각각의 장단점, 그리고 이 둘의 차이점을 설명하기 전에 더 상위 개념인 JDBC에 대해서 알아보겠습니다.
1. JDBC란?
애플리케이션을 사용하고 종료하면 데이터가 사라지지만, 데이터를 영구적으로 보관(영속성)하려면 데이터베이스를 사용합니다. 그러나 데이터베이스를 사용할 때마다 커넥션 연결을 설정하고, SQL을 보내고, 응답을 받는 과정이 각 데이터베이스마다 달라서 문제가 발생했습니다. 이러한 문제를 해결하기 위해 JDBC가 등장합니다. JDBC는 Java에서 데이터베이스에 접근할 수 있게 해주는 Java API입니다.
JDBC의 등장으로 많은 부분이 편리해졌지만, 여전히 불편한 점들이 남아 있었습니다. 이러한 불편함을 해소하기 위해 등장한 기술이 바로 SQL Mapper와 ORM입니다.
2. SQL Mapper란?
SQL Mapper는 SQL 쿼리와 객체 간의 매핑을 담당하며, 개발자가 직접 SQL 쿼리를 작성하여 데이터베이스와 상호작용할 수 있는 기능을 제공합니다. SQL Mapper는 실행 과정에서 JDBC를 사용하지만, JDBC를 직접 사용할 때 발생하는 반복 작업을 도와주고 SQL과 객체 간의 매핑을 쉽게 처리할 수 있게 해줍니다. 대표적인 SQL Mapper로는 MyBatis와 JDBC Template이 있습니다.
아래 그림을 보시면 이해하는데 조금 도움이 되실 겁니다.
2-1. SQL Mapper의 장단점
장점
1. SQL 응답 결과를 객체로 편리하게 변환해준다.
2. JDBC의 반복 코드를 제거해준다.
3. 세부적인 SQL 변경이 자유롭다.
단점
1. SQL문을 직접 작성해야 된다.
2. DBMS에 종류에 따라 SQL문법이 다르기에 DBMS에 종속적이다.
3. ORM(Object-Relational Mapping)이란?
ORM은 객체와 관계형 데이터베이스의 테이블 간의 매핑을 담당하며, 개발자가 SQL을 작성하지 않고도 데이터베이스와 상호작용할 수 있는 기능을 제공합니다. ORM또한 실행 과정에서 JDBC를 사용합니다. 대표적인 ORM으로는 Hibernate,JPA 등이 있습니다.
3-1. ORM의 장단점
장점
1. SQL Mapper보다 DBMS에 종속성이 줄어든다.
2. 객체 지향적으로 코드를 짤 수 있어서 코드의 가독성이랑 유지보수하기 쉬워진다
3. SQL 쿼리를 직접 작성할 필요 없이 데이터베이스와 상호작용이 가능하다.
단점
1. 복잡한 쿼리문을 작성할 때 ORM으로 구현하기 어렵다.
2. 잘못 사용 시 불필요한 데이터까지 불러와 성능 문제가 발생할 수 있다.
4. SQL Mapper와 ORM의 차이점
- SQL Mapper는 SQL 쿼리를 직접 작성하여 데이터베이스와 상호작용하는 반면, ORM은 쿼리문을 직접 작성하지 않고 자동화 기능을 제공합니다.
- SQL Mapper는 데이터베이스 성능 최적화에 유리하지만, 코드의 가독성이 떨어질 수 있습니다. 반면, ORM은 코드의 가독성이 높지만 성능 최적화가 어려울 수 있습니다.
- SQL Mapper는 쿼리문과 객체를 매핑하는 반면, ORM은 객체와 데이터베이스 테이블이랑 매핑합니다.
요약하자면 ORM은 추상화와 자동화를 제공하며 객체 지향 프로그래밍과 잘 맞습니다. 그러나 복잡한 쿼리 처리와 성능 최적화가 매우 어렵습니다.
SQL Mapper는 직접 SQL 쿼리를 작성하고 제어할 수 있어 복잡한 쿼리와 성능 최적화에 유리하지만, 코드가 반복적이고 유지보수가 어려울 수 있습니다.
'DB' 카테고리의 다른 글
[DB+Spring] JdbcTemplate 정리 - NamedParameterJdbcTemplate (0) | 2024.08.16 |
---|---|
[DB] 트랜잭션 정리 2편 - 락(Lock) (0) | 2024.08.08 |
[DB] 트랜잭션 정리 1편 (0) | 2024.08.06 |