オブジェクト リレーショナル マッピング (ORM) は、オブジェクト指向データベースとリレーショナル データベース間の不一致を解決するために設計されたテクノロジーです。 簡単に言うと、ORM は、オブジェクトとデータベース間のマッピングを記述するメタデータを使用して、プログラム内のオブジェクトをリレーショナル データベースに自動的に保存します。基本的に、データをある形式から別の形式に変換します。
ORM はすべての SQL ステートメントの生成を提供し、プログラマーはデータベースの概念から離れます。概念的要件 (HQL など) から SQL ステートメントへのマッピングにはコストはかからず、1% のパフォーマンスの低下もありません。実際のパフォーマンスへの影響はマッピング プロセス中、より具体的にはオブジェクトのインスタンス化中に発生します。
現在、PHP オープンソース用のより有名な ORM には次のものがあります:
Propel は、PHP5 に適した ORM マッピング (オブジェクト リレーショナル マッピング) フレームワークであり、Apache Torque に基づいたオブジェクト永続層のサポートを提供します。 XML 形式のスキーマ定義ファイルと対応する構成ファイルを通じて SQL とクラスを生成し、SQL の代わりにオブジェクトを使用してデータベース テーブルのレコードを読み書きできるようにします。 Propel は、データ モデルの SQL 定義ファイルと PHP クラスを作成するジェネレーターを提供します。開発者は、生成されたクラスを簡単にカスタマイズすることもできます。たとえば、PHP フレームワーク symfony の 1.2 より前のバージョンは、デフォルトで使用されます。デフォルトの ORM フレームワークとして機能します。
公式ウェブサイト:http://www.propelorm.org/
Doctrine は PHP ORM フレームワークであり、バージョン >=php5.2.3 で実行する必要があります。これは強力なデータ抽象化レイヤーです。
その主な特徴の 1 つは、オブジェクト指向のアプローチを使用してデータベース クエリ クロージャを実装することです。その最下層は、Hibernate HQL と同様の DQL クエリ ステートメントを使用してデータベース クエリを実行するため、開発がより柔軟になり、重複コードが大幅に削減されます。 Propel と比較した場合、Doctrine の利点は、全文検索をサポートしていること、Doctrine のドキュメントが常に Propel よりも包括的で豊富であること、コミュニティがより活発で、より自然で読みやすく、ネイティブ SQL に近いことです。 。性能もPropelより若干優れています。同様に、Doctrine を既存のアプリケーション フレームワークに簡単に統合できます。たとえば、PHP フレームワーク symfony 以降のバージョンでは、デフォルトの ORM フレームワークとして Doctrine が使用されており、Doctrine を Codeigniter と統合することもできます。公式ウェブサイト: http://www.doctrine-project.org/
3.EZPDO
公式サイト:http://www.ezpdo.net/blog/?p=2
4、小豆
公式サイト:http://www.redbeanphp.com/
5. その他
一般に、一般的な ORM フレームワークは、単純なアプリケーション システムの基本的なニーズを満たすことができ、開発の難易度を大幅に軽減し、開発効率を向上させることができますが、SQL の最適化という点では、純粋な SQL 言語よりも明らかに劣ります。複雑な関係や SQL 埋め込み式は理想的ではない可能性があります。おそらくこれは、PHP 自体のオブジェクトの永続性の問題が主な原因であり、その結果、ORM が非効率になり、一般に純粋な SQL よりも遅くなります。しかし、これらを解決する方法はあります。パフォーマンスを解決する最も基本的な解決策は、Hibernate の構成は複雑ですが、2 次キャッシュとクエリ キャッシュを柔軟に使用することで問題を大幅に軽減することです。データベースのクエリ負荷により、システムのパフォーマンスが大幅に向上します。
PHP ORM を自分で実装したい場合は、以下を参照してください:
れーれー
http://www.bkjia.com/PHPjc/752351.html