最近、低速のグリッド負荷でパフォーマンスの問題をトラブルシューティングする必要がありました。調査の結果、誰かがList<Product>
を使ってグリッドにデータを入力したように見えました。問題は、Productオブジェクトに多くのプロパティがあり、多くはグリッドに必要なものではなく、ほとんどが.lazyloads()ではないということでした。Hibernateアーキテクチャのベストプラクティス
問題を解決するために、ProductLiteという新しいオブジェクトを作成しました。これには負荷が掛かりませんでした。ほとんどのキー情報とパフォーマンスはすぐれていました。 10,000 dbヒットするのではなく、1になりました。
あなたのオブジェクトをどのようにモデリングしていますか?時には集中的なオブジェクトの読み込みが必要なので、すべてのオブジェクトに「詳細」と「情報」のバージョンが必要であると私は考えていました。つまりProductDetails ProductInfoは単にリストで使用するための高レベルの情報を運ぶのに対しは、すべての情報を含んでいるでしょうし、リストで使用されていない、迅速な検索など
は最高として採用されている標準はありますオブジェクトのモデリングのための実践?
関連する質問:http://stackoverflow.com/questions/2435111/using-lite-エンティティのバージョンnhibernate - 関係 –
ハハ、エイリアン、それはほとんど正確ですが、私が見逃して申し訳ありません。私はこの闘いで一人ではないと聞いてよかったです。 :) –