ORM이란 무엇이고, 어떻게 작동하며, 어떻게 사용해야 하나요?

누군가가 제가 설계 중인 프로젝트에 ORM을 사용하라고 제안했지만, 그 정의나 작동 방식에 대한 정보를 찾는 데 어려움을 겪고 있습니다.

누구든지 ORM이 무엇이고 어떻게 작동하는지, 어떻게 시작해야 하는지 간략하게 설명해 줄 수 있나요?

질문에 대한 의견 (7)

소개

객체 관계 매핑(ORM)은 객체 지향 패러다임을 사용하여 데이터베이스의 데이터를 쿼리하고 조작할 수 있는 기술입니다. 대부분의 사람들은 ORM에 대해 이야기할 때 객체 관계형 매핑 기법을 구현하는 라이브러리를 가리키며, 따라서 'ORM'이라는 문구를 사용합니다.

ORM 라이브러리는 데이터를 조작하는 데 필요한 코드를 캡슐화하는 원하는 언어로 작성된 완전히 일반적인 라이브러리로, 더 이상 SQL을 사용하지 않고 사용 중인 언어와 동일한 언어로 객체와 직접 상호 작용합니다.

예를 들어, 다음은 의사 언어를 사용한 완전히 가상의 사례입니다:

책 클래스가 있는데 저자가 '라이너스'인 모든 책을 검색하고 싶다고 가정해 보겠습니다. 수동으로는 이와 같은 작업을 수행할 수 있습니다:

book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
     book = new Book();
     book.setAuthor(row.get('author');
     book_list.add(book);
}

ORM 라이브러리를 사용하면 다음과 같이 표시됩니다:

book_list = BookTable.query(author="Linus");

기계적인 부분은 ORM 라이브러리를 통해 자동으로 처리됩니다.

장단점

**ORM을 사용하면 다음과 같은 이유로 많은 시간을 절약할 수 있습니다.

  • DRY: 데이터 모델을 한 곳에서만 작성하면 코드를 업데이트, 유지 관리 및 재사용하기가 더 쉬워집니다.
  • 데이터베이스 처리부터 I18N에 이르기까지 많은 작업이 자동으로 수행됩니다.
  • MVC]3 코드를 작성해야 하므로 결국 코드가 조금 더 깔끔해집니다.
  • 잘못된 형식의 SQL을 작성할 필요가 없습니다(대부분의 웹 프로그래머는 SQL을 하위 언어처럼 취급하지만 실제로는 매우 강력하고 복잡한 언어이기 때문에 SQL을 정말 못 씁니다).
  • 위생 처리; 준비된 문이나 트랜잭션을 사용하는 것은 메서드를 호출하는 것만큼이나 쉽습니다.

**ORM 라이브러리를 사용하면 다음과 같은 이유로 더 유연합니다.

  • 자연스러운 코딩 방식에 맞습니다(여러분의 언어입니다!).
  • DB 시스템을 추상화하므로 원할 때 언제든지 변경할 수 있습니다.
  • 이 모델은 애플리케이션의 나머지 부분에 약하게 바인딩되어 있으므로 변경하거나 다른 곳에서 사용할 수 있습니다.
  • 데이터 상속과 같은 OOP의 장점을 골치 아프지 않게 사용할 수 있습니다.

**하지만 ORM은 골칫거리가 될 수 있습니다.

  • 학습해야 하고, ORM 라이브러리는 가벼운 도구가 아닙니다;
  • 설정해야 합니다. 같은 문제가 있습니다.
  • 일반적인 쿼리에서는 성능이 괜찮지만, 대규모 프로젝트의 경우 SQL 마스터는 항상 자신의 SQL을 사용하는 것이 더 좋습니다.
  • DB를 추상화합니다. 이면에서 무슨 일이 일어나는지 알면 괜찮지만, 초보 프로그래머에게는 for 루프에서 큰 히트를 치는 것과 같이 매우 탐욕스러운 문을 작성할 수 있는 함정이 될 수 있습니다.

ORM에 대해 어떻게 배울까요?

하나를 사용하세요. 어떤 ORM 라이브러리를 선택하든 모두 동일한 원리를 사용합니다. 여기에는 많은 ORM 라이브러리가 있습니다:

웹 프로그래밍에서 ORM 라이브러리를 사용하려면 다음과 같은 전체 프레임워크 스택을 사용하는 것이 좋습니다:

  • 심포니]10 (PHP, Propel 또는 Doctrine 사용).
  • Django]11 (Python, 내부 ORM 사용).

무언가를 배우려는 것이 아니라면 자신만의 ORM을 작성하려고 하지 마세요. 이것은 거대한 작업이며 오래된 것들은 신뢰할 수있게되기 전에 많은 시간과 노력이 필요했습니다.

해설 (3)
  • give me a brief explanation.* 아무나 &gt.

그러거라

러마) 의 약자로, 개체 관계형 mapping&quot &quot. 여기서

이 부분은 - 객체에는 사용해도 수 있는 프로그래밍 언어 (python 이 경우)

    • 관계형 데이터베이스 관리자 - 이 부품이 관계형 데이터베이스 시스템 (데이터베이스입니다) 에는 가장 인기 있는 것은 물론 다른 종류의 관계 (테이블, 열, Oracle, MySQL ms sql 알고 pk fk 상술합니다 eg)
  • 마지막으로 가교 역할을 할 수 있는 부품이 매핑에서는 해당 객체를 사용하여 조종됩니다 표.

39, 응용 프로그램에서 사용할 수 있는 t don& 러마 레임워크 이렇게 하려면 손. 러마 사용 할 수 있도록 만드는 데 필요한 상용 솔루션을 절감하십시오 이를 어겼다.

그래서 이 객체에는 let&, s # 39 라고 합니다.

 class Employee:
      def __init__( self, name ): 
          self.__name = name

       def getName( self ):
           return self.__name

       #etc.

테이블에

   create table employee(
          name varcar(10),
          -- etc  
    )

러마 할 수 있는 프레임워크를 사용하여 데이터베이스 (db) 와 함께 객체에는 매핑하려면 자동적 기록하십시오 write something like:

   emp = Employee("Ryan")

   orm.save( emp )

갖고 있는 부하예요 삽입됨 DB.

&lt sub>; 하지만 충분히 잡을 수 있는 것은 간단한 들소네? 좋겠다 "고 간단하게 다른 가공물과 너회가 read.&lt /sub>;

해설 (0)

ORM(객체 관계형 매퍼)은 코드 오브젝트를 데이터베이스에 매핑하는 데 도움이 되는 소프트웨어의 일부/계층입니다.

어떤 것은 다른 것보다 더 많은 측면을 처리하지만, 그 목적은 개발자의 어깨에서 데이터 계층의 무게를 덜어주는 것입니다.

다음은 마틴 파울러(데이터 매퍼)의 짧은 영상입니다:

엔터프라이즈 애플리케이션 아키텍처 데이터 매퍼의 패턴

해설 (0)

모든 약어와 마찬가지로 모호하지만 객체 관계형 매퍼를 의미한다고 생각합니다(눈을 가리고 그 밑에 SQL이 없는 것처럼 보이게 하는 방법, 오히려 모든 것이 객체라고 믿게 하는 방법). 물론 실제로는 사실이 아니며 문제가 없는 것은 아닙니다. 항상 다채로운 제프 앳우드는 ORM을 CS의 베트남으로 묘사했습니다.) 하지만 SQL을 거의 또는 전혀 모르고 아주 간단하고 작은 규모의 문제가 있는 경우 시간을 절약할 수 있습니다!)

해설 (0)

객체 모델은 다음과 같은 세 가지 관련된 개념 Data Abstraction 캡슐화 상속 기본 개념은 관계형 모델을 사용하는 관계 또는 테이블. 객체 관계 매핑 (또는 구성도를) 제품을 통합 관계형 데이터베이스 객체 프로그래밍 언어 기능을 함께 사용할 수 있습니다.

해설 (0)