NHibernate-개요

이 장에서는 NHibernate가 무엇인지, 구현 가능한 모든 플랫폼, 장점 및 이와 관련된 기타 측면에 대해 논의 할 것입니다.

NHibernate 란 무엇입니까?

NHibernate는 .NET 프레임 워크를위한 성숙한 오픈 소스 객체 관계형 매퍼입니다. 적극적으로 개발되고 모든 기능을 갖추고 있으며 수천 개의 성공적인 프로젝트에 사용됩니다. 그것은 위에 구축ADO.NET 현재 버전은 NHibernate 4.0.4.

  • NHibernate는 오픈 소스 .NET 객체 관계형 매퍼이며 GNU Lesser General Public License.

  • 인기있는 Java 객체 관계형 매퍼 인 Hibernate를 기반으로하며 매우 성숙하고 활동적인 코드 기반을 가지고 있습니다.

  • 객체 지향 도메인 모델을 기존의 관계형 데이터베이스에 매핑하기위한 프레임 워크를 제공합니다.

  • NHibernate는 다음에 의해 시작되었습니다. Tom Barrett 그리고이 프로젝트는 2003 년 2 월에 처음으로 시작되었습니다.

  • 그것은 큰 프로젝트이며 많은 기능을 제공합니다.

  • 이있다 NuGet package 프로젝트에 쉽게 추가 할 수 있습니다.

왜 NHibernate인가?

이제 질문은 왜 우리가 필요합니까? object-relational mappers? 대상 세계와 관계 세계 사이에 단절이 있기 때문입니다.

  • 객체 세계에서 모든 것은 objects; 우리는 데이터가있는 것을 객체라고 부릅니다.

  • 관계형 세계는 모두 집합 기반이며 객체 세계와 다른 테이블과 행을 다루고 있습니다.

  • 객체 세계에서 우리는 unidirectional associations. 고객이 주문에 대한 포인터를 가지고 있다고해서 반드시 주문에 고객에 대한 포인터가 있다는 것을 의미하지는 않으며 그렇지 않을 수도 있습니다.

  • 관계형 세계에서 모든 연관은 bidirectional 외래 키로 수행 할 수 있습니다.

  • 모든 연관은 본질적으로 양방향이므로 객체 관계형 매핑을 처리 할 때 이러한 연결 끊김도 처리해야합니다.

  • 객체 세계에서는 단방향 포인터로 작업하는 반면, 관계형 세계에서는 본질적으로 양방향 인 외래 키를 사용합니다.

  • 객체 세계는 상속이라는 개념을 가지고 있습니다. 자동차는 여러 가지 하위 클래스를 가질 수 있습니다. 따라서 자동차는 차량 유형이고 보트는 자동차 유형이며 스포츠카는 자동차 유형입니다. 상속 관계.

  • 관계형 세계에는 이러한 상속 개념이 없습니다.

매핑

그래서 우리는이 모든 것을 어떻게 매핑합니까? disjoint relationships?이 매핑 개념은 객체 관계형 매퍼에서 비롯됩니다. 다음 다이어그램과 같이 주로 이해해야 할 세 가지가 있습니다.

  • 애플리케이션에는 클래스 정의가 필요합니다. 일반적으로 C # 코드와 Employee 클래스, Customer 클래스, Order 클래스 등과 같은 클래스를 나타내는 .NET 코드입니다.

  • 맨 아래에서 데이터베이스 스키마를 볼 수 있습니다. Data Definition Language 고객 테이블의 모양, 직원 테이블의 모양을 지정하는 관계형 데이터베이스에서.

  • 이 사이에는 행과 열 및 외래 키 관계의 관점에서 C #의 개체 세계에서 데이터베이스 세계로 변환하는 방법을 개체 관계형 매퍼에게 알려주는 매핑 메타 데이터가 있습니다.

  • 이 매핑 메타 데이터는 다양한 방식으로 표현 될 수 있으며 NHibernate 애플리케이션에서 가장 일반적인 여러 가지 방식을 살펴볼 것입니다.

  • 다음과 같이 표현됩니다. HBM (Hibernate Mapping) XML 파일 인 파일.

지원되는 데이터베이스

NHibernate는 다양한 데이터베이스를 지원합니다. 기존의 관계형 데이터베이스는 NHibernate에 액세스 할 수 있습니다.

  • SQL 서버는 기본적으로 지원되는 데이터베이스이며 대부분의 개발자가 개발 중에 사용하고 있으며 아마도 가장 일반적인 데이터베이스 일 것입니다.

  • 또한 works very well with Oracle.

  • 또한 DB2, Firebird, MySQL, PostgreSQL, SQL Lite를 지원합니다.

  • 또한 갖는다 ODBC and OLEDB drivers.