「NHibernate」と「ORM」の違い

NHibernateは.NET向けORM製品の一種で、ORMはデータベースとオブジェクト間の自動マッピング技術全般を指します。

NHibernate

NHibernateは、Hibernateの.NET版ORM フレームワークです。オブジェクト指向プログラミングとリレーショナルデータベースの橋渡しをします。XMLマッピングやLINQ対応で、複雑なクエリも効率的に実行できます。Java版Hibernateの機能をC#環境に移植しています。

例:NHibernateを使用してデータベースのユーザーテーブルをクラスにマッピングし、オブジェクト操作でデータを取得します。

ORM

ORM(Object-Relational Mapping)は、オブジェクト指向言語とリレーショナルデータベースを自動でマッピングする技術です。SQLを直接書かずにオブジェクト操作でDB操作が可能です。言語やプラットフォームに依存しない汎用概念で、多くのORMツールが存在します。

例:ORM技術を活用すれば、SQLを書かずにオブジェクト指向的なコードでデータベース操作が可能になります。

両者の違い

ORMは概念・技術の総称であり、NHibernateはその概念を実装した具体的なツール(製品)です。ORMは設計思想を指し、あらゆる言語に存在します。NHibernateは.NETとC#専用で、ORMの概念を実現する選択肢の一つに過ぎません。NHibernate以外にもEntity Framework等のORMツールがあります。

どちらを使うべき?判断のポイント

ORMが必要か判断する際は、SQLの自動生成による開発効率化が必須かを確認します。NHibernateは.NET環境で実績が豊富で複雑な要件に対応できます。シンプルなプロジェクトならEntity Frameworkなど他のORMも検討してください。

それぞれの語をさらに詳しく

語彙の星図で「NHibernate」と「ORM」のつながりを探索する →