백엔드 개발은 데이터베이스와 밀접한 관련이 있습니다. 데이터를 생성하고, 읽고, 수정하고, 삭제하는 CRUD 기능은 대부분의 백엔드 개발의 핵심이며, 이 과정에서 데이터베이스와의 상호작용이 활발하게 이루어집니다. 이 과정에서 백엔드 개발자에게는 두 가지 접근 방식이 존재합니다. 바로 SQL 과 ORM 입니다.

SQL, Structured Query Language 는 관계형 데이터베이스를 조작하기 위한 언어입니다. 사용자가 원하는 데이터를 정확하게 조회하거나 삽입하고, 효율적인 쿼리를 통해 시스템의 성능을 관리하는 데 핵심적인 역할을 합니다.
String sql = "INSERT INTO user (username, email) VALUES (?, ?)";
jdbcTemplate.update(sql, "name", "email");
ORM, Object Relational Mapping 은 객체지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 테이블을 자동으로 매핑해주는 도구 입니다. 예시로는 Java 의 JPA, Hibernate, Python 의 SQLAlchemy 등이 있습니다.
userRepository.save(new User("name", "email"));
아래의 예제 코드만 보면 ORM 을 사용하는 것이 훨씬 간편하고 직관적으로 보입니다. 이뿐만 아니라 ORM 을 사용하면 여러가지 추가적인 장점이 존재합니다.
ORM 은 위와 같이 다양한 장점을 가지고 있으며, 개발 속도와 코드 가독성을 높여주는 강력한 도구 입니다.
이렇게 보면 ORM 은 SQL 을 대신할 수 있는 완벽한 대체 수단으로 보입니다. 하지만 사실은 그렇지 않습니다. 이제 ORM 의 한계와 단점을 알아보겠습니다.
또한 실무에서도 대규모 데이터를 다루는 프로젝트에서는 ORM 의 추상화가 오히려 걸림돌이 됩니다. 실제로 많은 기업들이 대량 조회에는 ORM 을 사용하지 않습니다.
백엔드 개발자는 ORM 뿐만 아니라 SQL 에 관한 충분한 사용 경험과 이해도 필요합니다.
결국 ORM 도 SQL 을 기반으로 만들어진 것이기때문에ORM을 제대로 이해하고 사용하기 위해서는 SQL 에 대한 선행 학습이 우선되어야합니다.
결론적으로 SQL 은 단순한 기술이 아니라 백엔드 시스템을 이해하고 제어하기 위한 중요한 기본 지식입니다.