반응형

ORM

객체와 관계형 데이터베이스 간의 간극을 줄이기 위한 프로그래밍 기술을 나타냅니다. ORM의 아이디어는 데이터베이스와 상호작용할 때 원시 SQL 쿼리를 작성하는 대신 프로그래밍 언어 객체와 개념을 사용하는 방법을 제공하는 것입니다.

전통적인 관계형 데이터베이스에서는 데이터가 테이블, 행 및 열에 저장되지만 객체 지향 프로그래밍에서는 데이터가 속성과 메서드를 갖는 객체로 나타납니다. ORM 프레임워크는 개발자가 데이터베이스 레코드를 일반적인 프로그래밍 객체처럼 다를 수 있도록 해 주며, 원시 SQL 처리의 복잡성을 크게 추상화합니다.

 

ORM 프레임워크의 주요 기능

  • 객체 표현 : ORM 프레임워크는 데이터베이스 테이블에 해당하는 클래스를 정의하고, 이러한 클래스의 속성을 테이블의 열과 매핑합니다.
  • CRUD 작업 : ORM 프레임워크는 생성, 읽기, 업데이트, 삭제 와 같은 일반적인 데이터베이스 작업을 수행하는 메서드를 제공합니다.
  • 쿼리 언어 : ORM 프레임워크는 종종 자체 쿼리 언어나 쿼리 빌더를 제공하여 개발자가 더 객체 지향적인 구문을 사용하여 데이터베이스 쿼리를 작성할 수 있게 합니다.
  • 관계 : ORM 프레임워크는 다른 데이터베이스 테이블 간의 관계(일대다, 다대일, 다대다 관계 등)을 처리할 수 있습니다.
  • 데이터 유효성 검사 : ORM 프레임워크는 종종 데이터 유효성 검사와 유형 검사 메커니즘을 포함하여, 저장하거나 검색하는 데이터가 정의된 스키마와 일치하는지 확인합니다.
  • 마이그레이션 : 일부 ORM 프레임워크는 시간이 지남에 따라 데이터베이스 스키마 변경을 관리하기 위한 마이그레이션 도구를 제공할 수 있습니다. 이를 통해 애플리케이션이 진화함에 따라 데이터베이스 스키마를 업데이트할 수 있습니다.

ORM 프레임 워크

  • Hibernate(JAVA): Hibernate는 JAVA 애플리케이션에서 널리 사용되는 ORM 프레임워크로, 주로 MYSQL, PostgreSQL, Oracle과 같은 관계형 데이터베이스와 함께 사용됩니다.
  • Django ORM(Python): Django ORM은 Python의 Django 웹 프레임워크의 일부로 제공됩니다. 강력하고 사용하기 쉬운 데이터베이스의 상호작용 방식을 제공합니다.
  • Entity Framework(.NET): Entity Framework는 Microsoft의. NET 애프리케이션용 ORM 프레임워크입니다. 다양한 데이터베이스 공급자를 지원하며 데이터 액세스에 대한 다양한 기능을 제공합니다.
  • Active Record(Ruby on Rails): Active Record는 루비 온 레일즈 웹 프레임워크에 포함된 ORM입니다. Active Record 패턴을 따르며 데이터베이스 상호작용을 단순화합니다.

ORM 장단점

장점

  • 생산성 향상 : ORM은 SQL 쿼리를 직접 작성하지 않고도 데이터베이스와 상호작용할 수 있도록 도와줍니다. 이로써 개발자는 데이터베이스 처리를 더 빠르게 구현할 수 있으며, 개발 시간이 단축됩니다.
  • 객체 지향적인 코드 : ORM을 사용하면 데이터베이스 레코드를 객체로 다룰 수 있습니다. 이는 코드를 더 객체 지향적으로 설계하고 유지 보수하기 쉽게 만들어 줍니다.
  • 데이터베이스 독립성 : ORM 프레임워크는 다양한 데이터베이스 시스템과 호환되도록 설계되어 있으므로, 데이터베이스를 변경해야 할 때 코드 변경을 최소화할 수 있습니다.
  • 복잡한 쿼리 관리: ORM은 복잡한 조인 작업과 쿼리 작성을 간소화합니다. 관계형 데이터베이스에서의 다양한 조작을 보다 직관적인 객체 지향적 방식으로 다룰 수 있습니다.
  • 보안 및 SOQL 인젝션 방어 : ORM은 일부 보안 위험을 줄이는 데 도움이 되며, 잘 구현된 ORM은 SQL 인젝션과 같은 공격을 방어하는 데 도움이 될 수 있습니다.

단점

  • 성능 문제 : 일부 경우에는 ORM이 생성하는 SQL 쿼리가 최적화되지 않을 수 있습니다. 복잡한 쿼리나 대량의 데이터 처리와 같이 성능에 중요한 부분에서는 직접 SQL을 작성하는 것이 더 효율적일 수 있습니다.
  • 학습 곡선 : ORM은 자체적인 개념과 용어를 가지고 있기 때문에 초기 학습 곡선이 있을 수 있습니다. ORM 프레임워크의 기능과 동작을 익히는 데 시간이 걸릴 수 있습니다.
  • 제한된 데이터베이스 지원 : 모든 ORM 프레임워크가 모든 데이터베이스 시스템을 지원하는 것은 아닙니다. 특정 데이터베이스에 대한 지원이 부족할 수 있습니다.
  • 복잡한 관계 처리 : 복잡한 데이터베이스 관계를 다를 때 ORM이 가끔 복잡해질 수 있습니다. 특히 복잡한 다대다 관계와 중첩된 관계를 다룰 때 어려움이 있습니다.
  • 의존성 : ORM을 사용하면 응용 프로그램의 코드가 ORM에 의존하게 됩니다. ORM 프레임워크의 변경이나 업그레이드가 응용 프로그램 전반에 영향을 줄 수 있습니다.
  • 디버깅과 성능 최적화의 어려움 : 생성된 SQL 쿼리가 복잡할 수 있으며, 이를 디버깅하거나 최적화하는 것이 어려울 수 있습니다.
728x90

'BackEnd > 더 깊은 데이터베이스 지식' 카테고리의 다른 글

데이터베이스 정규화  (0) 2023.08.22
트랜잭션  (0) 2023.08.19
ACID  (0) 2023.08.18