ORM vs SQL Mapper

  • ORM, SQL Mapper 모두 데이터베이스와 애플리케이션 간의 상호작용을 돕는 도구이다.

ORM

  • 특징

    • ORM 은 객체 지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 테이블 간 매핑을 자동으로 처리한다.

    • 개발자는 SQL 쿼리를 직접 작성하지 않고도 객체를 통해서 데이터베이스에 접근할 수 있다.

    • ORM 은 일반적으로 객체 지향 프로그래밍 언어의 문법과 구조를 따르기 때문에, 개발자들이 더 직관적으로 코드를 작성할 수 있도록 해준다.

    • ORM 은 데이터베이스의 테이블과 객체 간의 관계를 관리하며, 객체의 CRUD 작업을 처리하는 다양한 메서드를 제공한다.

  • 장점

    • 객체지향적인 코드 작성이 가능하다. -> 쿼리에 집중하지 않기 때문에, 직관적이며 비지니스 로직에 충실한 코드 작성이 가능하다.

    • 재사용성 및 유지보수 편의가 증가한다. -> DBMS 벤더에 독립적이다.

    • ORM 은 보안적인 측면에서 SQL 인젝션을 방지하는데 도움을 줄 수 있다.

  • 단점

    • ORM 은 객체와 데이터베이스와 매핑하기 위해 많은 리소스를 사용할 수 있다. -> 복잡한 쿼리나 대량의 데이터를 다룰 경우 성능 저하가 발생할 수 있다.

    • 일부 복잡한 데이터베이스 관계를 표현하기가 어려울 수 있다. -> 객체지향 모델과 관계형 데이터베이스 간에는 차이가 있기 때문에, 매핑이 어려울 수 있다.

    • 데이터 모델의 복잡도에 비례해 난이도가 증가한다.

SQL Mapper

  • 특징

    • SQL Mapper 는 개발자가 직접 쿼리를 작성하고 실행하는 방식으로 데이터베이스와 상호작용한다.

    • SQL Mapper 는 쿼리를 객체로 매핑하지 않고, 데이터베이스 결과를 다루기 위한 데이터 구조로 매핑한다.

    • SQL Mapper 를 사용하면 개발자가 원하는 대로 세밀하게 SQL 제어할 수 있다.

  • 장점

    • 개발자가 직접 쿼리를 작성해 원하는 방식으로 데이터를 다룰 수 있다.

    • 복잡한 쿼리나 대량의 데이터를 다룰 때 성능이 좋을 수 있다. -> 개발자가 최적화된 쿼리를 작성할 수 있다.

    • SQL Mapper 는 비교적 단순한 매핑작업을 수행하기 때문에, 복잡한 데이터베이스 관계를 다루기에 적합하다.

  • 단점

    • SQL Mapper 는 개발자가 직접 쿼리를 작성하기에 코드가 더 복잡해 질 수 있다... -> 이건 단점은 아닌듯 ..

    • SQL Mapper 는 데이터베이스와 밀접하게 결합되어, 데이터베이스 변경 시 코드 수정이 필요할 수 있다.

    • SQL Mapper 는 객체지향 프로그래밍과 멀리 떨어져 있기에, 객체지향의 장점을 살리기가 어렵다.

Last updated