ORM을 사용하면 어떤 종류의 웹 개발 프로젝트가 도움이됩니까?


10

먼저 SQL을 사용하여 데이터베이스 작업의 95 %를 수행했다고 말하겠습니다. 최근에는 NHibernate 및 Doctrine과 같은 다양한 ORM에 대해 조사했습니다.

ORM이 제공하는 많은 SQL 및 데이터베이스 이식성을 알 필요가 없다는 장점을 볼 수 있습니다. 그러나 SQL을 아는 것이 ORM 작업을보다 효율적으로 할 수 있다는 것을 알 수 있으며, 내 경력에서 한 번만 응용 프로그램의 가장 큰 변화가 데이터베이스 공급 업체가 될 것이라고 생각할 수 있습니다.

SQL을 작성하는 것이 매우 편하고 ORM 사용의 이점을 잘 모르고 있기 때문에 ORM을 많이 사용하는 사용자에게는 다음과 같은 질문이 있습니다.

ORM을 사용하면 어떤 종류의 웹 개발 프로젝트가 가장 유리합니까?


3
대답은 "모두"입니다. 그러나 그것은 아마도 당신이 알고 싶은 것이 아닙니다. 좀 더 구체적인 정보를 요청하기 위해 질문을 수정하고 싶을 수도 있습니다.
S.Lott

1
나에게 SQL은 현재 생산하기가 쉽지만 그것은 내 순응 (또는 무지) 때문입니다. ORM이 일반적인 SQL보다 느리기 때문에 항상 최선의 선택은 아니라는 것을 읽었습니다. 그러나 많은 개발자들은 이것이 일반적으로 중요하지 않다고 말했습니다. ORM에 가장 적합한 프로젝트가 궁금합니다. 대부분의 답변이 "모두"일 수 있다는 것도 알 수 있습니다. 구체적인 답변을 찾고 있지 않습니다. :)
Fred Wilson

더 자세한 정보를 요구하지 않으면 많은 것을 배우지 않을 것입니다.
S.Lott

답변:


5

(거의) 모든 응용 프로그램은 ORM의 혜택을받습니다.

첫째, ORM에 대해 귀하가 나열한 이점에 동의하지 않습니다 .

  • ORM을 사용한다고해서 반드시 SQL을 알 필요는 없습니다. SQL에 대한 지식은 ORM 도구가 실제로 수행하는 작업을 이해하는 데 도움이되며 이는 디버깅 중에 특히 유용합니다. 또한 SQL은 실제로 선택한 ORM의 기능을 넘어서는 복잡한 쿼리를 개발해야 할 수도 있습니다.
  • 그리고 당신이 말하는 것처럼 이식성은 실제 생활에서 거의 문제가되지 않습니다.

대신 ORM 의 실제 이점 은 다음과 같습니다.

  • ORM은 SQL로 많은 CRUD 로직을 작성하여 프로그래머 시간 을 절약합니다.
  • 많은 ORM에는 작성 및 디버깅이 어려운 복잡한 캐싱 로직 등이 포함됩니다. 시간을 절약 할뿐만 아니라 응용 프로그램의 안정성과 유지 관리 성향상시킬 수 있습니다 (또는 최소한 동일한 결과를 얻는 데 걸리는 시간을 절약 할 수 있습니다).
  • 최고의 ORM에는 제품을 적극적으로 개발, 유지 관리 및 지원하는 사용자 커뮤니티가 있습니다. 커스텀 SQL에 대한 커뮤니티는 기껏해야 해결해야 할 문제에 덜 집중합니다.

의견을 말하면 ORM의 한 가지 단점은 성능이 저하된다는 것입니다. 그러나 이는 일반적으로 더 많은 하드웨어를 사용함으로써 상쇄 될 수 있습니다.

일반적으로 프로그래머 시간은 하드웨어보다 비싸므로 일반적으로 ORM은 SQL을 수동 코딩하는 대신 좋은 옵션입니다.

ORM은 매우 간단한 CRUD 데이터베이스 로직을 사용하는 애플리케이션에 가장 적합합니다. ORM은 덜 효과적입니다 .

  • 데이터베이스 액세스가 거의 필요하지 않은 응용 프로그램.
  • 복잡한 쿼리와 매우 간단한 CRUD 논리에 크게 의존하는 응용 프로그램
  • 성능이 중요하지만 더 빠른 하드웨어를 배포 할 수없는 상황

내 경험상 이러한 상황은 드물다. 따라서 내 대답.


"ORM을 사용한다고해서 반드시 SQL을 알 필요는 없습니다." -맞아 팀 환경에서 볼 수있는 장점 중 하나는 비즈니스 계층에서 작업하는 모든 개발자가 전문가가 될 필요가 없도록 SQL 기술 집합을 집중시킬 수 있다는 것입니다.
Fred Wilson

1
복잡한 쿼리의 경우 언제든지 SQL로 되돌리고 SQL 쿼리를 작성할 수 있습니다.
harsimranb

4

SQL 작성도 편안합니다. 또한 SQL을 전혀 쓸 필요가 없으며 데이터베이스에 연결, 연결 해제, 풀링 등을 걱정하지 않아도됩니다.

그래서 .. 당신의 질문에 대한 부정적인 대답을 드리겠습니다. ORM의 이점이없는 유일한 웹 개발 프로젝트는 데이터베이스와 전혀 대화하지 않는 프로젝트입니다. 내가 믿는 것은 소수입니다 (있는 경우).


+1 : 저는 또한 SQL에 능숙하다고 생각하지만 여전히 OR / M을 선호합니다. 사실 나는 OR / M을 잘 사용하려면 SQL에 대한 핸들이 있어야한다고 말하고 싶습니다. 그렇지 않으면 추상화가 누출 될 때 문제를 찾지 못할 것입니다. "많은 SQL을 알 필요가 없습니다"는 기능이 아닙니다. 나에게 그것은 생산성 향상과 컴파일러가 런타임 및 OR / M이 아닌 문제를 찾도록하는 것입니다 (특히 새로운 제네릭 / Linq 기반의 것이 좋습니다).
Brook

@ 브룩-전적으로 동의합니다. OR / M을 사용한다고해서 SQL 지식이 선택적인 것은 아닙니다.
Otávio Décio

2

ASP.NET WebForms에 대한 경험을 바탕으로 상태 저장 웹 프레임 워크를 사용하는 웹 프로젝트 가 ORM을 사용하면 가장 큰 이점을 얻을 것을 제안합니다 .

상태 저장 프레임 워크를 사용하면 활성 서버 컨트롤의 계층 구조를 기반으로 장면 뒤에서 마크 업이 자동으로 생성됩니다. 이러한 컨트롤을로드하여 자동으로 데이터베이스에 상태를 유지하려는 유혹을 받고 있습니다. 이것이 ORM이 도와주는 곳입니다.

파이프 라인의 끝 부분 (HTML 출력)을 추상화하면 자연스럽게 시작 (데이터 소스)을 동일한 방식으로 처리하여 응용 프로그램 코드의 비즈니스 논리 내에서만 유지할 수 있습니다.

내가 이것이 좋은 일이라고 말하는 것은 아닙니다. ORM이 자연스럽게 어울리는 곳입니다.


2

ORM을 사용하면 크고 매우 연결된 객체 모델이있는 응용 프로그램에서 동일한 조인을 반복해서 쓰지 않아도됩니다.

또 다른 이점은 지연 로딩입니다. API의 클라이언트가 해당 그래프의 하위 집합 만 사용하는 API가 객체 그래프를 반환하도록합니다.


1

ORM과 DBAL을 혼동하고 있다고 생각 합니다 .

참조하는 개념은 기본 데이터베이스 시스템에 의존하지 않는 이식 가능한 "sql"을 작성할 수있는 DBAL (Database Abstraction Layer)입니다.

반면 ORM은 (거의? 거의 항상 DBAL 위에 구축 됨) :

Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language. (위키 백과)

간단히 말해서 ORM을 사용하면 플랫 데이터베이스의 데이터를 팽창 된 객체 표현으로 변환 할 수 있습니다.


명확하게 해 주셔서 감사합니다. ORM으로 이사해야하는 주된 이유는 OOP에 더 집중하고 일부 프로젝트에 적합한 SQL을 작성하는 것에서 멀어지기 때문입니다.
Fred Wilson

1

ORM의 혜택을받지 못하는 프로젝트는 다음과 같습니다.

  • 객체 지향적이지 않은 것;
  • 데이터를 유지할 필요가없는 것;
  • 객체 지향 DB를 사용하므로 추가 매핑 계층이 필요하지 않습니다.
  • 비 관계형 NoSQL 솔루션을 사용하는 솔루션;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.