ホームページ >php教程 >PHP开发 >マイバティスとイバティスの違い

マイバティスとイバティスの違い

高洛峰
高洛峰オリジナル
2017-01-05 17:18:232283ブラウズ

Mybatis と Ibatis の違い:
1. Mybatis は、より使いやすいインターフェース バインディングを実装します。
ibatis2.x では、DAO 実装クラスに対応する XML マッピング ファイルを指定する必要があります。 XML マッピング ファイルのバインディングにより、インターフェイスの特定の実装が自動的に生成され、使用がより簡単かつ便利になります。
これはMybatisの最も重要な改善点と言えます。

注:

Mybatis は、設定を簡素化するためにインターフェース内でアノテーション設定を直接使用することをサポートしていますが、
引き続き XML 設定を使用することを強くお勧めします。結局のところ、アノテーションの構成方法では機能が制限されており、コードも煩雑です。 XML 構成メソッドを使用することによってのみ、Mybatis の利点が反映されます

2. オブジェクト関係マッピングが改善され、より効率的になります

ibatis2 を使用している友人も多いと思います。実際、ibatis2.x は「ネストされたクエリ」メソッドを使用して、クエリ ステートメントの直接アセンブリを通じてオブジェクト間の関係を実現するため、その効果は DAO または Service にカプセル化するのと同じです。
ただし、この方法には「N+1クエリ問題」があります。
一言で言えば、N+1 クエリの問題は次のような原因で発生する可能性があります:
結果リスト (つまり +1) を取得するために 1 つの SQL ステートメントを実行しました。
? 返されたレコードごとにクエリを実行して、それぞれの詳細をロードします (N です)。
この問題により、数百または数千の SQL ステートメントが実行されます。これは通常は予期されません。

Mybatis では、ibatis2 の「ネストされたクエリ」メソッドと互換性があることに加えて、必須オブジェクトに組み込まれます。

具体的な実装方法については、Mybatis 公式ユーザーマニュアルを参照してください。ここでは説明しません

しかし、実際には、この改善によってもたらされる利点も非常に限られています。ページングを使用する場合、またはネストされたオブジェクトの結果セットでページングが許可されない場合、このメソッドは機能しないためです。この点は Mybatis フレームワーク (org.apache.ibatis.executor.resultset.NestedResultSetHandler の 34 行目) で明確に制限されており、実際のプロジェクトではページングが必要になるケースが多くあります...

よく考えてください、ペアこの時点でクエリされるレコードの数が実際に返されるオブジェクトのサイズと等しくないため、マルチマッピングでは構成ファイルをページングできないのは事実ですが、1 対 1 マッピングがなぜそうでないのかは明らかではありません。許可された。おそらく、1 対 1 は 1 対多の特殊なケースであり、フレームワークを設計するときに、この特殊なケースを処理することが考慮されていなかったか、困難だったからでしょう。

3. MyBatis は、他の要素を排除するために強力な OGNL ベースの式を使用します。

struts2 に慣れている人は、OGNL 式に慣れていないはずはありません。
MyBatis は、構成ファイルの複雑さを簡素化し、使いやすくするために OGNL ベースの式を使用します。簡潔。

あなたがもっと心配していることは、

Mybatis がより使いやすいインターフェース バインディングを実装しているということです。
iBatis/MyBatis 3 は、新しい機能である注釈を提供します。


Mybatis と Ibatis の違いに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。