1

カスタム (通常は揮発性) データをエンティティ モデル クラスに導入するベスト プラクティスは何ですか? これは最初は悪い習慣のように聞こえるかもしれませんが、非常に一般的なシナリオのようです。最近の Web アプリケーションでは、適切なモデルを開発しており、ほとんどの場合、モデル エンティティの読み込みに問題はありません。しかし、エンティティの階層全体をロードする余裕がない場合があります。たとえば、いくつかの SQL COUNT の結果、またはモデル エンティティと一緒に (またはモデル エンティティ内に埋め込まれた) 追加情報をロードする必要があります。したがって、基本的に、要件と条件は次のとおりです。

  1. これは、すべての操作の 99.9999999999% が読み取り操作である Web アプリケーションです。

  2. 複雑なビジネス ロジックを処理したり実行したりする必要はありません。データをすばやく HTML に変換する必要があるだけです。

  3. いくつかのパフォーマンス クリティカルなケースでは、どのモデル プロパティにも適合しない SQL 集計の結果を読み込む必要があります。

  4. 必要に応じて、新しいカスタム データを導入するための拡張可能な方法が必要です。

通常、ORM (たとえば、db からの生データ) にあまり手を加えずに、この問題をどのように解決しますか? これは何度も議論されていると思いますが、役に立つものを見つけるための適切な Google クエリがわかりません。

編集:後で質問があまりうまく形成されていないことに気付いたので、再定式化して新しい質問を開始することにしました。

4

3 に答える 3

2

ブラウザーとの間でリレーショナル データを取得しているだけで、間に動作がほとんどまたはまったくない場合は、OO パラダイムを使用してリレーショナルの問題を解決しようとしているように思えます。

オブジェクト指向のアプローチを完全にやめたいと思うかもしれません。

私のチームは最近、「機能する可能性のある最も単純なものは何ですか?」という質問をして、アプリケーションを書き直しました。および「問題に最も近い言語は何ですか?」。私たちの新しいアプリは、OO のアプリに取って代わり、最終的に 10 分の 1 のサイズ、高速、低価格になりました。

SQL、ストアド プロシージャ、DB サーバー上の XML ライブラリ、XSLT (HTML を取得するため)、および JavaScript を使用しました。

于 2009-11-23T22:22:18.797 に答える
0

私のような OOP 純粋主義者は、Decorator パターンに行きます。 http://en.wikipedia.org/wiki/Decorator_pattern

しかし問題は、それが提供する柔軟性を必要としない人もいるということです。さらに、個別の操作ごとに新しいクラスを作成するのはやり過ぎのように思えるかもしれませんが、適切なコンパイル タイプ チェックが提供されます。

于 2009-03-06T17:31:45.777 に答える