私は以前にMyBatisをあまり使用していませんでしたが、HibernateのようなORMデータベースフレームワークであることを知っています。使用の習熟度が増加するにつれて、冬眠とは大きく異なることがわかりました。興味のある友達はこの記事を通してそれを学ぶことができます。
今週末を利用して、私はいくつかの一般的に使用されるテクノロジーを整理するために時間をかけ、編集者は時々コンテンツを更新します。
まず、2つの概念を簡単に紹介しましょう。
Hibernate:Hibernateは現在最も人気のあるORMフレームワークであり、データベース構造の比較的完全なカプセル化を提供します。
MyBatis:MyBatisは非常に人気のあるORMフレームワークでもあり、PojoとSQLのマッピング関係に主な焦点を当てています。
第二に、いくつかの面で2つの違いについて話しましょう。
1。2つの最大の違い:
単純なロジックの場合、HibernateとMyBatisには、シンプルで基本的なDAO層メソッドを生成できる対応するコード生成ツールがあります。
高度なクエリには、MyBatisにはSQLステートメントと結果マップの手動書き込みが必要です。 Hibernateには優れたマッピングメカニズムがあるため、開発者はSQLの生成と結果マッピングを気にする必要はなく、ビジネスプロセスにより多くの焦点を合わせることができます。
2。開発の難易度の比較
冬眠の発達はMyBatisよりも困難です。主に、冬眠は複雑で大きく、長い学習サイクルを持っているからです。
MyBatisは比較的単純であり、MyBatisは主にSQLの執筆に依存しているため、開発者はより馴染みがあります。
3。SQLライティングの比較
MyBatisのSQLは手動で記述されるため、必要に応じてクエリ用のフィールドを指定できます。ただし、独自のログ統計はないため、log4jを使用してログを記録する必要があります。
Hibernateは、SQL自体を記述して、照会する必要があるフィールドを指定することもできますが、これにより、冬眠発生のシンプルさが破壊されます。ただし、Hibernateには独自のログ統計があります。
4。データベースのスケーラビリティの比較
すべてのSQLがデータベースに記述されているため、MyBatisのスケーラビリティと移行が低下しています。
HibernateとDatabaseの特定の関係はXMLにあるため、HQLは使用するデータベースについてあまり心配していません。
5。キャッシュメカニズムの比較
類似点:システムのデフォルトのキャッシュメカニズムを使用することに加えて、HibernateとMyBatisの第2レベルのキャッシュは、独自のキャッシュを実装したり、他のサードパーティキャッシュソリューションのアダプターを作成したりすることにより、キャッシュ動作を完全に上書きすることができます。
違い: Hibernateのセカンダリキャッシュ構成は、CessionFactoryによって生成された構成ファイルで詳細に構成され、キャッシュが構成されている特定のTable-Objectマップで構成されます。
MyBatisのセカンダリキャッシュ構成は、特定のテーブルオブジェクトマップごとに詳細に構成されているため、さまざまなキャッシュメカニズムをさまざまなテーブル用にカスタマイズできます。 MyBatisは、Cache-Refを介して実装される名前空間で同じキャッシュ構成とインスタンスを共有できます。
2つの比較: Hibernateにはクエリオブジェクトの優れた管理メカニズムがあるため、ユーザーはSQLを気にする必要はありません。したがって、セカンダリキャッシュを使用するときに汚れたデータが表示される場合、システムはエラーとプロンプトを報告します。
この点で、MyBatisはL2キャッシュを使用する際に特別な注意が必要です。データの更新操作の範囲を完全に決定できない場合は、キャッシュの盲目的な使用を避けてください。それ以外の場合、汚れたデータの外観は、システムの通常の動作に大きな隠れた危険をもたらします。
6。概要:
MyBatis:小さく、便利で、効率的、シンプル、直接、半自動
Hibernate:強力で、便利で、効率的で、複雑で、完全に自動
HibernateとMyBatisは、sessionFactoryBuiderを介してXML構成ファイルからSessionFactoryを生成し、SessionFactoryからセッションを生成し、最後にトランザクションとSQLステートメントを実行できます。
MyBatisの利点は、MyBatisがより詳細なSQL最適化を実行し、クエリフィールドを削減し、簡単にマスターできることです。
Hibernateの利点は、DAO層の開発がMyBatisよりも簡単であり、SQLと結果マッピングのメンテナンスが必要なことです。データベースの移植性は非常に優れており、MyBatisデータベースの移植性は良くなく、異なるSQLを記述するには異なるデータベースが必要です。より良いレベル2キャッシュメカニズムがあり、サードパーティのキャッシュを使用できます。 MyBatis自体は、キャッシングメカニズムが不十分であることを提供します。
MyBatis:
1.開始、学習、使用が簡単で、データベースクエリに自動オブジェクトバインディング機能を提供し、SQL使用の良いエクスペリエンスを継続します。これは、このような高いオブジェクトモデルの要件を持たないプロジェクトに最適です。
2.より詳細なSQL最適化を実行でき、クエリフィールドを削減できます。
3.不利な点は、フレームワークがまだ比較的単純であり、機能がまだ欠落していることです。データバインディングコードは簡素化されていますが、基礎となるデータベースクエリ全体を実際に自分で記述する必要がありますが、ワークロードは比較的大きく、迅速なデータベースの変更に適応するのは簡単ではありません。
4.二次キャッシングメカニズムは貧弱です。
Hibernate:
1。強力な機能、優れたデータベースの無関係性、および強力なO/Rマッピング機能。冬眠に非常に熟練しており、適切にカプセル化された冬眠状態である場合、プロジェクトの永続レイヤーコード全体が非常に簡単になり、書き込むコードはほとんどありません。開発速度は非常に高速で、非常にクールです。
2。より良い二次キャッシュメカニズムがあり、サードパーティのキャッシュを使用できます。
3.不利な点は、学習しきい値が低くなく、熟練している必要があることです。 O/Rマッピングの設計方法、パフォーマンスモデルとオブジェクトモデルのバランスを取る方法、および冬眠の使用方法には、経験と強力な能力が必要です。
鮮明な比phorをお知らせください:
MyBatis:機械工具は使いやすく、できるだけ早く使用できますが、自分で作業を行う必要がありますが、ツールは生きているので、それらを作る方法は私に依存します。
Hibernate:インテリジェントロボットですが、開発(学習、習熟度)を開発するのは非常に高価です。仕事はそれを取り除くことができますが、それができることだけです。