私のさまざまなプロジェクトでは、コマンド/クエリ分離パターンを実装し、NHibernate を ORM として使用しています。
一般に、コマンドとクエリはUserManagement
、TagManagement
、QuestionManagement
などの特定の一連のアクティビティに関連する別のプロジェクトに保持します。
簡単に見つけられる機能を備えたこれらのリポジトリにすべてをうまく分割するのがとても好きです。このように物事を行うことには確かに利点があります。
しかし、特に NHibernate がすでにそのような強力な抽象化を提供していることを考えると、基本的なクエリに対するこの抽象化の価値について疑問に思い始めています。
私のMVCコントローラーでこれを考慮してください:
_nHibernateSession.Get<UserProfile>(_sessionData.UserId);
これをリポジトリのクエリに抽象化できましたUserManagement
が、それがどのような価値を提供するのかわかりません。
どう思いますか?すべてをコマンド/クエリ パラダイム内に保持しますか?それとも、このような単純な要求のためにコントローラで nhibernate セッションを直接使用しますか?