見習い期間中、NHibernateを使用して、主に自分でコーディングおよび設計したいくつかの小さなプロジェクトを使用しました。さて、いくつかのより大きなプロジェクトを始める前に、データアクセスを設計する方法とORMレイヤーを使用するかどうかについての議論が生じました。私はまだ実習生であり、自分自身をエンタープライズプログラミングの初心者と見なしているため、データベースにオブジェクトリレーショナルマッパーを使用すると、開発を大幅に容易にできるという私の考えを実際に押し付けようとはしませんでした。開発チームの他のコーダーは私よりもはるかに経験が豊富なので、私は彼らが言うことだけをやると思います。:-)
ただし、NHibernateまたは同様のプロジェクトを使用しない2つの主な理由を完全には理解していません。
- SQLクエリを使用して自分のデータアクセスオブジェクトを作成し、それらのクエリをMicrosoft SQL Server Management Studioからコピーするだけです。
- ORMのデバッグは難しい場合があります。
したがって、もちろん、多数のSELECT
sなどを使用してデータアクセスレイヤーを構築することもできますが、ここでは、自動結合、遅延読み込みプロキシクラス、およびテーブルが新しい列を取得するか列が名前が変更されました。(多数のSELECT
、INSERT
およびUPDATE
クエリの更新と、マッピング構成の更新、およびおそらくビジネスクラスとDTOのリファクタリング)。
また、フレームワークをよく知らない場合、NHibernateを使用して予期しない問題が発生する可能性があります。たとえば、文字列の長さが自動的に検証されるように設定したTable.hbm.xmlを信頼する場合などです。ただし、「単純な」SqlConnectionクエリベースのデータアクセスレイヤーに同様のバグがあることも想像できます。
最後に、上記の議論は、重要なデータベースベースのエンタープライズアプリケーションにORMを利用しないことの本当に正当な理由ですか?彼ら/私が逃したかもしれない他の議論はおそらくありますか?
(これは、チームワークを必要とする最初の「大きな」.NET / C#ベースのアプリケーションのようなものだと思うことを追加する必要があります。ユニットテストや継続的な統合など、スタックオーバーフローではかなり正常と見なされる良い習慣はありません。 -ここまで存在します。)