Nhibernate-overview
提供:Dev Guides
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パッケージ*が用意されており、プロジェクトへの追加が非常に簡単になります。
NHibernateを使用する理由
さて、問題はなぜオブジェクトリレーショナルマッパーが必要なのかということです。それは、オブジェクトの世界とリレーショナルの世界との間に断絶があるからです。
- オブジェクトの世界では、すべてが*オブジェクト*に基づいています。オブジェクトとは、データを持つものと呼ばれます。
- リレーショナルワールドはすべてセットベースであり、オブジェクトワールドとは異なるテーブルと行を扱っています。
- オブジェクトの世界では、*単方向の関連付け*があります。 顧客が注文へのポインタを持っている場合、それは必ずしも注文が顧客へのポインタを持っていることを意味するわけではありません。
- リレーショナルの世界では、すべての関連付けは*双方向*であり、外部キーによって実行できます。
- すべてのアソシエーションは本質的に双方向であるため、オブジェクトリレーショナルマッピングを扱うときは、この切断も処理する必要があります。
- オブジェクトの世界では、単方向のポインターで作業していますが、リレーショナルの世界では、本質的に双方向の外部キーがあります。
- オブジェクトの世界には継承という概念があり、車両にはさまざまなサブクラスを含めることができるため、車は車両の一種、ボートは車両の一種、スポーツカーは車の一種です。継承関係。
- リレーショナルの世界には、この継承の概念がありません。
マッピング
それでは、これらすべての*互いに素な関係*をどのようにマッピングしますか?このマッピングの概念は、オブジェクトリレーショナルマッパーに由来します。 次の図に示すように、主に3つのことを理解する必要があります。
- アプリケーションでは、クラス定義が必要です。これは通常、C#コードと、Employeeクラス、Customerクラス、Orderクラスなどのクラスを表す.NETコードです。
- 一番下に、データベーススキーマがあります。これは、顧客テーブルと従業員テーブルの外観を指定するリレーショナルデータベースの*データ定義言語*です。
- これらの間に、C#のオブジェクトワールドから行と列、および外部キー関係の観点からデータベースワールドに変換する方法をオブジェクトリレーショナルマッパーに伝えるマッピングメタデータがあります。
- このマッピングメタデータはさまざまな方法で表すことができ、NHibernateアプリケーションで最も一般的なこのさまざまな方法をいくつか見ていきます。
- XMLファイルである* HBM(Hibernate Mapping)*ファイルで表されます。
サポートされるデータベース
NHibernateは、多種多様なデータベースをサポートしています。 そこにある既存のリレーショナルデータベースはすべて、NHibernateにアクセスできます。
- SQLサーバーは、サポートされている主要なデータベースです。これは、ほとんどの開発者が開発中に使用しているもので、おそらく最も一般的なものです。
- また、* Oracleと非常にうまく機能します*。
- DB2、Firebird、MySQL、PostgreSQL、SQL Liteもサポートしています
- また、* ODBCおよびOLEDBドライバー*もあります。