VMCを使用してサイトを作成し、Beanを使用してモデルからコントローラー/ビューにデータを転送しています。
Beanを変更していない場合は単純な構造体に格納する、基本的で非常に単純なキャッシングを実装する予定です(使用量が増えるにつれて、バージョン1.3以降のより優れたキャッシングシステムを実装します)。
したがって、問題はBeanに何が含まれるかということです。
1つのタイプのBeanは基本データのみを保持し、残りの作業を外部サービスに依存します(DAOに連絡してクエリを取得し、クエリを解析してBean値をロードします)。これは、同僚から繰り返し言われている「貧血の豆」モデルです:-)。
別のタイプのBeanは、より自己完結型です。DAOがどこにあるかを知っているので、DAOを直接呼び出してデータクエリを取得します。クエリを解析してプロパティを設定するために必要な関数が含まれます。基本的に、「サービス」レイヤーの多くをBeanと組み合わせて、直接データベースをDAOレイヤーに残します。
もちろん、コントローラー/ビューにとって、両方のBeanは同じように見え、同じように動作します。
しかし、問題はメモリと、ColdFusion/Javaがそれをどのように処理するかです。
貧血モデルを使用すると、Beanには、必要なときにサービスをポイントできるようにするために、もう少しタッチするだけでプロパティ変数を保持するのに十分なメモリがあります。
2番目のタイプのBeanの関数が重いと、キャッシュ内でより多くのメモリを消費しますか?Beanの各コピーには、メソッドの完全なコピーがありますか?
2番目のモデルは、メソッドを「共有」し、プロパティ変数用のメモリのみを必要とするため、メモリはそれほど多くないと思う傾向があります。
2番目の方法であるIMHOは、コードベースを単純化します。これは、Beanが必要とするコードが、DAOとサービスの間に散在するのではなく、Beanに近いためです。また、BeanのDAOへの呼び出しを渡すだけで、必要なときにDAOに直接アクセスできるサービスの単純な関数が減ります...
質問は意味がありますか?または、少なくとも私はそれをどのように求めていますか?