mapping、O/RM、ORM)とは、データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法である。オブジェクト関連マッピングとも呼ぶ。実際には、オブジェクト指向言語から使える「仮想」オブジェクトデータベースを構築する手法である。オブジェクト関係マッピングを行うソフトウェアパッケージは商用のものもフリーなものもあるが、場合によっては独自に開発することもある。外部リンク背景[edit]オブジェクト指向プログラミングでは、データ管理タスクは一般に単純なスカラーではない値を持つオブジェクトを操作するよう実装される。例として、1人の人物に0個以上の電話番号と0個以上の住所が対応している住所録での住所検索を考えてみよう。オブジェクト指向的な実装では、「人物オブジェクト」に住所録の内容を格納する「スロット」が備わっているような形態でモデル化される。スロットとしては、氏名、電話番号のリスト(または配列)、住所のリストが考えられる。電話番号リストは「電話番号オブジェクト」で構成され、他も同様に対応するオブジェクトで表される。プログラミング言語からは、ある人物の住所録がひとつの値として扱われる(例えば、1つの変数で参照される)。このオブジェクトに対して、推奨電話番号を返すメソッド、自宅電話番号を返すメソッド、などの各種メソッドが関連付けられる。データベース言語SQLを使った一般的なデータベース製品では、格納し操作できるのはスカラー値(整数、文字列)だけであり、スカラー値による表を形成している。プログラマは、オブジェクトをデータベースに格納可能な単純な値のグループに変換するか、プログラムをデータベースに合わせて単純な値だけを扱うようにしなければならない。オブジェクト関係マッピングは前者の手法を実装するものである。この問題の要点は、オブジェクトをデータベースに格納可能な形式に変換し、後で容易に検索できるようにし、同時にオブジェクト同士の関係の特性を保持する点である。このようなオブジェクトを永続的であるという。実装[edit]最も一般的なデータベースはデータベース言語SQLを使った関係データベースであり、これらは1990年代のオブジェクト指向プログラミングの隆盛以前に既に一般化していた。関係データベースは表という概念でデータを格納する。存在するデータ間の関連は宣言的制約によって示され、具体的なポインタやリンクは存在しない。オブジェクト関係マッピングの実装は体系的かつ予測可能な手法で表を選択し、必要なSQLを生成する。オブジェクト関係マッピングを開発する際の手間を削減するために様々なパッケージが提供されてきており、これらはマッピングを自動で行うクラス群のライブラリのような形態となっている。リストを与えると、自動的に要求をマッピングする。人物オブジェクトに電話番号を問い合わせると、適切なクエリが生成されて送られ、結果が直接電話番号オブジェクトに格納されるようプログラムされる[1]。プログラマからすれば、システムは永続的なオブジェクト保管所のように見える。オブジェクトを新たに生成して適切な処理をすると、最終的にそれがデータベースに自動的に保存される。実際のところ、話はそう単純ではない。システムは全く見えないように働くわけではなく、ある程度データベースを意識せざるを得ない。変換層は遅くて機能が不十分な場合もあり(特に生成するSQLの質の面で問題が多い)、結果としてプログラムの性能が低下し、メモリを余分に消費する。システムは各種開発されてきたが、その市場への影響は様々である。優れた製品だったが、OPENSTEP上でしか動作できなかったため、市場への影響はほとんどなかった。技術が使われることになった。二種類の実装で提供している。