ibatisnetシリーズ(一)概要
Ibatisnetを勉強して使ってからもうしばらく経ちましたが、この間iBatisに関するBlogも書いたことがあります.iBatisを全面的に紹介し、自分の学習過程と使用経験を共有し、よくある問題を記録することを約束したこともあります.しかし、この間ずっと試験の準備をしていたし、現在の種目の進度も厳しいので、なかなか始められなかったので、ここでお詫びします.今から遅くないことを願っています.しかし、最近コミュニティ(ブログ園)の良いニュースが絶えず、私はますます多くの人がiBatisに注目し始めていることを発見しました.そして、熱心なネットユーザーも極力普及しています.もしあなたがすでにそれを理解しているなら、ShanYouの文章を読むことをお勧めします.彼の書いた文章はもっとあなたに似合うかもしれません.私自身も初心者で、ここに記録されているいくつかのものは多くの理論知識(理論知識がまだしっかりしていない)がないかもしれませんが、自分の学習過程で長い時間をかけて解決しなければならないいくつかの問題を際立たせたり、個人が特に重要だと思って、忘れやすい細部を際立たせたりする可能性があります.レベルが限られていて、間違いは避けられません.もしこの過程で不適切なところがあったら、許してください.そして、けちをつけないでください.
くだらないことをひっくり返して、今日の本題に入ります.今日のテーマはIntroductionで、公式に紹介されていない中国語版です.詳細は公式ドキュメントを参照してください.私たちがそれを使うには、それが何に使われているのか、私たちのためにどのような仕事をすることができるのか、開発効率がどうなのか、実行効率がどうなのか、技術の難易度がどうなのかを知らなければなりません.
iBatisといえば、ORMテクノロジーにつながるかもしれません.はい、そうです.ORMテクノロジーとある程度関連していますが、より正確には、オーソドックスなORMソリューションではありません.NHibernateのように、クエリー、挿入、更新、削除など、全自動のデータ操作を備えているわけではありません.それほど、データベースの制約と密接な関係はありません(NHibernateに対する理解は多くありませんが、不適切な点があれば、臭い卵を残して、次回を待ってほしいです).iBatisは、クラスORMのソリューションを実現するために、より柔軟で便利な制御可能な方法を提供しています.私たちは自分でSQL文を制御する必要があります.このようにするメリットは、私たちのニーズに応じて、より性能、機能の優位性を備えたSQL文を書くことができますが、その欠点は同じように明らかで、SQL文を管理し、書く必要があります.しかし、これらのSQL文を提供し、必要なパラメータを提供するだけで、次のことに参加する必要はありません.これもiBatisの最も核心的な機能であり、私たちのために最も多くの仕事をしています.構成されたSQL文とパラメータ条件に基づいて、実行可能なSQL文が動的に生成され、転送されたパラメータ値に基づいて、これらのSQLパラメータに異なる値が提供されます.次に、構成されたデータアクセスドライバに従って、DbCommandにDbParameterを自動的に追加し、SQL文を自動的に実行し、IDataReaderを使用してデータセットを返し、1つ以上の強いタイプのデータクラスオブジェクト(データセットはIListセットオブジェクトで表される)を生成して返します.Community Serverでも似たような強いタイプのデータオブジェクトを返す実装を見たことがありますが、多くのコードが必要で、直接DataTableに戻るよりも重複コードが多くなります.これらすべてiBatisでは、1つのプロファイルを提供するだけで、提供されるSqlMapperインスタンスオブジェクトを呼び出す方法が簡単に実現できます.もちろん、システムが大きいと、多くのプロファイルが必要になるかもしれません.はい、また別の極端に陥りました.どうしようかな?仕方ないですね、魚と熊掌は兼ねられませんね.ここで重点的に強調しなければなりませんが、もしあなたが常にストレージの中でSQL文をつなぎ合わせているならば、私はもっとあなたがすぐにiBatisを使うことをお勧めします.
データ・オペレーションといえば、データのセキュリティと整合性の問題、すなわちデータ・オペレーションのトランザクションの問題に言及しないわけにはいきません.Adoを直接使うならNetでトランザクションを行う場合は、より多くのコードを書く必要があります.もちろん、Enterprise Libraryを使用して、私たちの仕事を簡素化することができます.では、iBatisでトランザクションをどのように実現するかを簡単なコードで見てみましょう.
くだらないことをひっくり返して、今日の本題に入ります.今日のテーマはIntroductionで、公式に紹介されていない中国語版です.詳細は公式ドキュメントを参照してください.私たちがそれを使うには、それが何に使われているのか、私たちのためにどのような仕事をすることができるのか、開発効率がどうなのか、実行効率がどうなのか、技術の難易度がどうなのかを知らなければなりません.
iBatisといえば、ORMテクノロジーにつながるかもしれません.はい、そうです.ORMテクノロジーとある程度関連していますが、より正確には、オーソドックスなORMソリューションではありません.NHibernateのように、クエリー、挿入、更新、削除など、全自動のデータ操作を備えているわけではありません.それほど、データベースの制約と密接な関係はありません(NHibernateに対する理解は多くありませんが、不適切な点があれば、臭い卵を残して、次回を待ってほしいです).iBatisは、クラスORMのソリューションを実現するために、より柔軟で便利な制御可能な方法を提供しています.私たちは自分でSQL文を制御する必要があります.このようにするメリットは、私たちのニーズに応じて、より性能、機能の優位性を備えたSQL文を書くことができますが、その欠点は同じように明らかで、SQL文を管理し、書く必要があります.しかし、これらのSQL文を提供し、必要なパラメータを提供するだけで、次のことに参加する必要はありません.これもiBatisの最も核心的な機能であり、私たちのために最も多くの仕事をしています.構成されたSQL文とパラメータ条件に基づいて、実行可能なSQL文が動的に生成され、転送されたパラメータ値に基づいて、これらのSQLパラメータに異なる値が提供されます.次に、構成されたデータアクセスドライバに従って、DbCommandにDbParameterを自動的に追加し、SQL文を自動的に実行し、IDataReaderを使用してデータセットを返し、1つ以上の強いタイプのデータクラスオブジェクト(データセットはIListセットオブジェクトで表される)を生成して返します.Community Serverでも似たような強いタイプのデータオブジェクトを返す実装を見たことがありますが、多くのコードが必要で、直接DataTableに戻るよりも重複コードが多くなります.これらすべてiBatisでは、1つのプロファイルを提供するだけで、提供されるSqlMapperインスタンスオブジェクトを呼び出す方法が簡単に実現できます.もちろん、システムが大きいと、多くのプロファイルが必要になるかもしれません.はい、また別の極端に陥りました.どうしようかな?仕方ないですね、魚と熊掌は兼ねられませんね.ここで重点的に強調しなければなりませんが、もしあなたが常にストレージの中でSQL文をつなぎ合わせているならば、私はもっとあなたがすぐにiBatisを使うことをお勧めします.
データ・オペレーションといえば、データのセキュリティと整合性の問題、すなわちデータ・オペレーションのトランザクションの問題に言及しないわけにはいきません.Adoを直接使うならNetでトランザクションを行う場合は、より多くのコードを書く必要があります.もちろん、Enterprise Libraryを使用して、私たちの仕事を簡素化することができます.では、iBatisでトランザクションをどのように実現するかを簡単なコードで見てみましょう.
using ( IDalSession session = sqlMap.BeginTransaction() )
{
Item item = (Item) sqlMap.QueryForObject("getItem", itemId);
item.Description = newDescription;
sqlMap.Update("updateItem", item);
session.Complete(); // Commit
}
, 。 , 。
OK, , 。 , SQL , 。 , ! DbCommand, DataTable Ado 。 , , , , Ado.net DataTable , 。 , , ( CodeSmith) , 。
, iBatis , , 。 , UpdateDataSet ( ) , , 。
, , SQL , , 。 。 , 。
, , log4net 。