ORM 이 있는데 SQL 공부해야 됨?ㅋ

박가은·2025년 5월 19일

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

SQL 은 무엇일까요?

SQL, Structured Query Language 는 관계형 데이터베이스를 조작하기 위한 언어입니다. 사용자가 원하는 데이터를 정확하게 조회하거나 삽입하고, 효율적인 쿼리를 통해 시스템의 성능을 관리하는 데 핵심적인 역할을 합니다.

String sql = "INSERT INTO user (username, email) VALUES (?, ?)";
jdbcTemplate.update(sql, "name", "email");

ORM 은 무엇일까요?

ORM, Object Relational Mapping 은 객체지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 테이블을 자동으로 매핑해주는 도구 입니다. 예시로는 Java 의 JPA, Hibernate, Python 의 SQLAlchemy 등이 있습니다.

userRepository.save(new User("name", "email"));

아래의 예제 코드만 보면 ORM 을 사용하는 것이 훨씬 간편하고 직관적으로 보입니다. 이뿐만 아니라 ORM 을 사용하면 여러가지 추가적인 장점이 존재합니다.

  • 객체 조작만으로 데이터베이스 연동이 가능 → 반복적으로 SQL 을 작성할 필요가 없음
  • 테이블 변경 시 도메인 모델만 변경하면 됨 → 일관성 유지 가능
  • SQL Injection 등 보안 이슈 예방 가능 (바인딩 처리)

ORM 은 위와 같이 다양한 장점을 가지고 있으며, 개발 속도와 코드 가독성을 높여주는 강력한 도구 입니다.

이렇게 보면 ORM 은 SQL 을 대신할 수 있는 완벽한 대체 수단으로 보입니다. 하지만 사실은 그렇지 않습니다. 이제 ORM 의 한계와 단점을 알아보겠습니다.

ORM 의 한계와 단점

  • 연관 객체 조회 시 반복 쿼리 발생 → 성능 저하
  • 다중 조인, 서브쿼리 등은 ORM 으로 표현하기 어려움
  • 어떤 SQL 이 실행되었는지 명확하지 않아서 쿼리 추적이 어려움 → 디버깅 난이도 상승

또한 실무에서도 대규모 데이터를 다루는 프로젝트에서는 ORM 의 추상화가 오히려 걸림돌이 됩니다. 실제로 많은 기업들이 대량 조회에는 ORM 을 사용하지 않습니다.

결론적으로

백엔드 개발자는 ORM 뿐만 아니라 SQL 에 관한 충분한 사용 경험과 이해도 필요합니다.

  • 데이터 조회 최적화: 특정 조건에 맞는 데이터만 빠르게 추출해야 할 때
  • 대량 삽입/ 갱신 처리: 트랜잭션 처리와 배치 작업에 유리
    ☞ 트랜잭션: DBMS 에서 데이터를 다루는 논리적인 작업의 단위
    ☞ 트랜잭션 처리: 트랜잭션 각 단위가 원자성, 일관성, 고립성, 지속성의 성질을 유지할 수 있도록 처리하는 것
    ☞ 배치 작업: 사용자 개입 없이, 정해진 시간이나 조건에 따라 반복적으로 실행되는 일괄 처리 작업
  • 다중 조인, 서브쿼리 등을 통해 복잡한 처리 가능

결국 ORM 도 SQL 을 기반으로 만들어진 것이기때문에ORM을 제대로 이해하고 사용하기 위해서는 SQL 에 대한 선행 학습이 우선되어야합니다.

결론적으로 SQL 은 단순한 기술이 아니라 백엔드 시스템을 이해하고 제어하기 위한 중요한 기본 지식입니다.

0개의 댓글