5

NHibernate と iBATIS.NET を比較した最新の情報を探しています。Google で検索していくつかの情報を見つけましたが、そのかなりの部分は、これらの製品の Java バージョンに適用されるか、古いものです。

私が興味を持っている特定の事柄:

  • データモデルとアプリケーションの両方を制御する場合、どちらが優れていますか?
  • iBATIS は繰り返し簡単に習得できると言われていますが、これは長期的なメンテナンスの結果 (つまり、開始するのは簡単ですが、維持するのは難しい) をもたらしますか?
  • どちらも、基盤となるデータベース ベンダーの切り替えを容易にしますか?
  • 開発者は SQL にどの程度のスキルを持っている必要がありますか?
  • 一方が持っていて、もう一方が欠けている主要な機能はありますか?
  • どちらの製品が特定のタイプのアプリケーションにより適していますか?

観察された利点と欠点の実例は大歓迎です!

編集:情報をありがとう。私自身の評価もしています。まだ疑問に思っていることの 1 つは、iBATIS は複雑なオブジェクト グラフを保存/更新するのに役立ちますか? NHibernate は、ルート オブジェクトを渡すことができ、データベースで何を更新する必要があるかの詳細を把握できるという点で優れているようです。

4

3 に答える 3

5

少し前に調べたことがある。

私からの具体的な質問の 1 つで、追加情報が得られるかもしれません。 部分的に制御できないレガシー データベースを使用するプロジェクトに NHibernate を使用しますか?

私が答えることができるあなたの興味のあるポイントのいくつか:

  • データモデルとアプリケーションの両方を制御する場合、どちらが優れていますか?

逆に答えることができます。データ モデルを制御できず、レガシー データベースに直面している場合は、iBatis の方が適しています。

  • iBATIS は繰り返し簡単に習得できると言われていますが、これは長期的なメンテナンスの結果 (つまり、開始するのは簡単ですが、維持するのは難しい) をもたらしますか?

それはあなたがそれで何をしたいかによって異なります。ドメイン駆動型の開発アプローチを使用している場合、iBatis は時間が経つにつれて苦痛になる可能性があります。単純なデータ操作を行うだけで、本格的なドメイン モデルがない場合、nHibernate はその時点でやり過ぎになる可能性があります。

  • どちらも、基盤となるデータベース ベンダーの切り替えを容易にしますか?

両方とも、特定のデータベース ベンダーからユーザーを保護するメカニズムを備えていますが、この方向で徹底的な調査を行っていないことは認めます。

  • 開発者は SQL にどの程度のスキルを持っている必要がありますか?

iBatis を使用する場合、NHibernate よりも多くの SQL スキルが必要です。iBatis を使用すると、常に何らかの SQL をコーディングする必要があります。NHibernate では、SQL ステートメントをコーディングする必要はありません。DDL を実行することさえできます。強力な機能を使用するには、古い適切な SQL に移行する必要がありますが、これは避けられません。

その他のポイント:

  • 個人的には、iBatis の方がはるかに軽量だと思います。物事を非常に迅速に行うことができます。NHibernate はより強力ですが、より多くの機能を備えているため、間違った使い方をする可能性があります。

  • NHibernate と iBatis の併用が可能!ビジネス ロジックには NHibernate を使用できます。テーブルからデータを読み取るだけのレポート目的では、iBatis にフォールバックします。

  • アプリケーションのライフ サイクルが長く、ビジネス ロジックが多い場合は、NHibernate を検討してください。ビジネスオブジェクトの処理に役立つ多くの機能があります。

  • NHibernate に関するコミュニティは非常に活発で、便利なツールを提供しています。

于 2009-03-29T16:08:47.110 に答える
3

ある意味では、リンゴとオレンジを比較しています。

データモデルとアプリケーションの両方を制御する場合、どちらが優れていますか?

これらは両方とも正規化されたデータベースでうまく機能するため、データベースを形成できれば、ほぼ同等です。iBatisは、実際にはデータベース構造をまったく気にしないため、レガシーデータベースへのマッピングに優れています。結果セットの形状のみを考慮します。

.iBATISは繰り返し学ぶのが簡単と呼ばれます-これは長期的なメンテナンスの結果をもたらしますか(つまり、開始が簡単で、メンテナンスが難しい)?

これははるかに単純ですが、それは機能セットがはるかに小さいためです。時限爆弾の長期的なメンテナンスの問題はないと思います。

どちらも、基盤となるデータベースベンダーの切り替えを容易にしますか?

はい

開発者はSQLにどの程度熟練している必要がありますか?

どちらもSQLに関する十分な知識が必要です。iBatisを使用する場合でも、SQLクエリ/プロシージャを作成する必要があります。NHibernateでは、効果的なSQLを取得するためにNHibernateクエリを作成する方法を知っている必要があります。どちらもSQLの知識に代わるものではありません。

一方にある、もう一方に欠けている主要な機能はありますか?

iBatisはデータマッパー(iBatisサイトで使用される用語)です。NHibernateは、本格的なオブジェクトリレーショナルマッパーです。iBatisは、オブジェクトを結果セットにマッピングする際に単調さを取り除くものが主に必要な場合に最適な方法です。ただし、オブジェクト/リレーショナルの不一致を解決しようとすると、うまくいきません。NHibernateには、ダーティトラッキング、ID / IDマップに基づくキャッシング、柔軟なクエリ、動的SQL、バッチ処理など、さらに多くの機能があります。NHibernateは、DBへの1回の移動で多くのことを実行できるという点で、はるかに動的です。 iBatisのいくつかの旅行。

于 2009-03-29T15:28:45.553 に答える
3

最近、これら 2 つのツールを比較する記事を投稿しましたが、多くの質問が解決されたと思います。この記事は、こちらの wiki サイトにあります。

于 2009-05-08T18:47:50.740 に答える