MVC3 NHibernate/ActiveRecord プロジェクトがあります。プロジェクトは順調に進んでおり、モデル オブジェクト (ほとんどの場合、3 つまたは 4 つのクラスの 1 つの巨大な階層) を少し使いこなしています。
私のアプリケーションは分析ベースです。階層データを保存し、後でスライスしたり、グラフに表示したりするので、実際の関係はそれほど複雑ではありません。
これまでのところ、私は ORM からあまり恩恵を受けていません。これによりクエリが簡単になります (ActiveRecord) が、完全なオブジェクトよりも必要な情報が少なくて済むことがよくあります。また、複雑で複数の選択とコレクションに対する反復を介して「難しい」クエリを記述する必要があります。生の SQL の方がはるかに高速でクリーンです。
この場合、ORM を捨てて生の SQL に戻ることを考えています。しかし、ソリューションを再設計する方法がわかりません。データベース層はどのように処理すればよいですか?
- オブジェクトを照会するための静的メソッドを使用して、モデルごとに 1 つのクラスを使用する必要がありますか? または、DB を表すクラスを 1 つ持つ必要がありますか?
- 既存のコードを多かれ少なかれ健全に保つために、ActiveRecord (または独自の ActiveRecord のような実装) の下に独自のレイヤーを作成する必要がありますか?
- ORM メソッド (保存/削除など) をモデル クラスに結合する必要がありますか?
- テーブル構造を変更する必要がありますか (すべてのフィールドを含むクラスごとに 1 つのテーブル)。
アドバイスをいただければ幸いです。最適なアーキテクチャとデザインを見つけようとしています。