Development

ORM

젤리젤리젤리젤리젤리 2023. 6. 14. 14:11
반응형

출처 : https://hanamon.kr/orm%EC%9D%B4%EB%9E%80-nodejs-lib-sequelize-%EC%86%8C%EA%B0%9C/

ORM은 Object-Relational Mapping의 약자입니다. 객체 지향 프로그래밍 언어와 관계형 데이터베이스 관리 시스템(RDBMS) 간의 데이터 변환 및 매핑을 용이하게 하는데 사용되는 프로그래밍 기술입니다.

ORM 프레임워크는 개발자가 객체 지향 패러다임을 사용하여 데이터베이스와 상호 작용할 수 있는 추상화 계층을 제공하므로 복잡한 SQL 쿼리를 작성하고 낮은 수준의 데이터베이스 작업을 수동으로 관리할 필요가 없습니다. 대신 개발자는 데이터베이스 테이블 및 레코드를 나타내는 개체 및 클래스로 작업할 수 있으며 ORM 프레임워크는 이러한 개체를 기본 데이터베이스 구조로 변환하는 작업을 처리합니다.

ORM 프레임워크는 일반적으로 다음과 같은 기능을 제공합니다.

  1. 개체-관계형 매핑: 개체를 데이터베이스 테이블에 매핑하고 개체 특성을 테이블 열에 매핑하여 애플리케이션 코드와 데이터베이스 간의 원활한 상호 작용을 가능하게 합니다.
  2. 쿼리: ORM 프레임워크는 종종 개발자가 높은 수준의 객체 지향 구문을 사용하여 데이터베이스 작업을 수행할 수 있도록 하는 쿼리 API를 제공합니다. 이렇게 하면 많은 경우에 원시 SQL 쿼리를 작성할 필요가 없습니다.
  3. 관계 및 연결: ORM 프레임워크는 개체 간의 관계를 처리하고 일대일, 일대다 또는 다대다 관계와 같은 관련 데이터를 검색하기 위해 SQL 쿼리를 자동으로 생성합니다.
  4. 데이터베이스 추상화: ORM 프레임워크는 기본 데이터베이스 시스템의 특정 세부 사항을 추상화하여 개발자가 수정 없이 여러 데이터베이스 엔진에서 작동할 수 있는 데이터베이스 독립적인 코드를 작성할 수 있도록 합니다.
  5. 데이터 유효성 검사 및 지속성: ORM 프레임워크는 종종 데이터가 데이터베이스에 저장되기 전에 데이터 유효성 검사를 위한 메커니즘을 제공합니다. 또한 개체의 지속성을 처리하여 개체에 대한 변경 사항이 데이터베이스와 동기화되도록 합니다.

다양한 프로그래밍 언어에 대한 몇 가지 인기 있는 ORM 프레임워크는 다음과 같습니다.

  • Django ORM(Python): Django는 강력한 ORM을 포함하는 Python용 웹 프레임워크입니다.
  • Hibernate(Java): Hibernate는 Java 애플리케이션용으로 널리 사용되는 ORM 프레임워크입니다.
  • Entity Framework(C#/.NET): Entity Framework는 .NET 애플리케이션용 ORM 프레임워크입니다.
  • SQLAlchemy(Python): SQLAlchemy는 Python용 다목적 ORM 라이브러리입니다.
  • ActiveRecord(Ruby): ActiveRecord는 Ruby on Rails의 기본 ORM 라이브러리입니다.

ORM은 데이터베이스 상호 작용에 필요한 반복적이고 오류가 발생하기 쉬운 코드의 양을 줄임으로써 개발 프로세스를 단순화하는 데 도움이 될 수 있습니다. 그러나 특정 시나리오에서는 추상화 계층이 원시 SQL 쿼리 작성에 비해 오버헤드를 추가하므로 ORM 성능이 문제가 될 수 있다는 점에 유의해야 합니다. 대규모 데이터 세트 또는 복잡한 쿼리로 작업할 때는 성능 영향 및 최적화 기술을 신중하게 고려해야 합니다.

참조
https://gmlwjd9405.github.io/2019/02/01/orm.html
https://eun-jeong.tistory.com/31
https://hanamon.kr/orm%EC%9D%B4%EB%9E%80-nodejs-lib-sequelize-%EC%86%8C%EA%B0%9C/
https://gmlwjd9405.github.io/2018/12/25/difference-jdbc-jpa-mybatis.html
https://openai.com/

728x90
반응형

'Development' 카테고리의 다른 글

Rust  (0) 2023.06.16
Hadoop - 빅데이터 분석 강화  (0) 2023.06.15
IT 프로덕트(솔류션) 개발 단계  (2) 2023.06.13
객체 지향 패러다임  (0) 2023.06.12
GraphQL  (0) 2023.06.10