オブジェクト関係マッピング
Cayenne は EOF と似ており、JPA standard に準拠している。
他の手法として RDF や SPARQL がある。RDF は主語-述語-目的語のトリプルによるシリアライズであり、RDF/XML はそのXML表現、SPARQL は RDF 用のSQL的クエリ言語である。このトリプルでやりとりできるデータベースをトリプルストア (triplestore) と呼ぶ。
その後、Java関連で新たな類似のシステムが Java Data Objects (JDO) として登場した。EOF とは異なり、JDO は標準規格であり、いくつかのベンダーから実装したものが登場している。Enterprise JavaBeans 3.0 (EJB3) も同様の分野をカバーしている。両者の間で標準規格としての競合状態が発生した。他にも Java 関連でよく使われているオブジェクト関係マッピングとして Hibernate がある。
Webフレームワーク Ruby on Rails では、オブジェクト関係マッピングが中心的役割を果たしており、Active Recordのデザインパターンを使って制御される。同様に Perl の Catalyst では DBIx::Class モジュールが同じような役割を果たしているが、他にも選択肢は存在する。
最も一般的なデータベースはデータベース言語SQLを使った関係データベースであり、これらは1990年代のオブジェクト指向プログラミングの隆盛以前に既に一般化していた。関係データベースは表という概念でデータを格納する。異なる関係 (表) に存在するデータ間の関連は宣言的制約によって示され、具体的なポインタやリンクは存在しない。オブジェクト指向なら同じデータは1つのオブジェクトに格納されるが、関係データベースでは必要に応じて複数の関係 (表) に格納される。
オブジェクト関係マッピングの実装は体系的かつ予測可能な手法で表を選択し、必要なSQLを生成する。
オブジェクト関係マッピングを開発する際の手間を削減するために様々なパッケージが提供されてきており、これらはマッピングを自動で行うクラス群のライブラリのような形態となっている。データベース内の関係 (表) のリストを与えると、自動的に要求をマッピングする。人物オブジェクトに電話番号を問い合わせると、適切なクエリが生成されて送られ、結果が直接電話番号オブジェクトに格納されるようプログラムされる。
プログラマからすれば、システムは永続的なオブジェクト保管所のように見える。オブジェクトを新たに生成して適切な処理をすると、最終的にそれがデータベースに自動的に保存される。
しかし実際のところ、話はそう単純ではない。