3

遅延読み込みについてお聞きしたいです。私はそれを否定すべきだとよく読んだことがありますが、おそらく一度も使用されていないデータをロードする必要があるのはなぜですか?

議論の例として、 を使用しましょうCustomer:

-Id
-Title
-FormOfAddress
-FirstName
-LastName
-Picture*
-DOB
-Phone
-Mobile
-Address*/Billing Address*
    -Id
    -Street
    -Number
    -Country*
        -Id
        -Name
        -Zipcode
-Bankdetails*
    -Id
    -AccountHolder
    -AccountNumber
    -Bank*
        -Id
        -Name
        -BankCode
    -IBAN

*、「必要なものだけをロードする」というモットーに従って遅延ロードするオブジェクトをマークします。

編集

私の質問は十分に明確ではないようですので、ここに私が知りたいことのより良い定式化があります:

ほとんどの人が遅延ロードを思いとどまらせる理由を知りたいのですが、それはそれを使用できないためですか、それとも本当に悪い欠点があるからですか?

4

2 に答える 2

5

チューニング メカニズムとしてLazy Loadを使用するのが一般的です。たとえば、すべてのデータをロードしていて、パフォーマンスの問題に気付いていない場合、(わずかに) 追加された複雑さについて心配する必要はないでしょう。遅延読み込みパターン。

ただし、パフォーマンスの問題に気付いている場合は、パターンを調べて、最も一般的に使用されるデータ (* でマークされたデータの上で指摘したように) を特定し、そのデータのみをロードする必要があります。余分なデータ (* でマークされていないフィールド) が必要なときに、システムのパフォーマンスが低下するかどうか、または同じドメイン内の他の操作 (に依存する、または依存する操作) が遅くなるかどうかを判断するには、パフォーマンス分析が必要です。あなたが説明している操作)

.NET 4.0 (およびそれ以降) を使用している場合、Lazy<T>Lazy Load の実装の複雑さを軽減するのに役立ちます (スレッド セーフも処理してくれます)。このコード プロジェクトの記事は実装に役立ちます。

于 2013-06-21T08:44:37.863 に答える
0

遅延読み込みには理由があります。特定のデータをあまり使用しないことがわかっている場合は、遅延ロードするのがちょうどいいでしょう。エラーが発生する可能性があるため、遅延読み込みに完全に慣れていない場合は避けてください。ほとんどの場合、特定のテクノロジーに専念しています。jpa hibernate について考えているだけです。Lazy Init の場合、パフォーマンスの問題が発生する可能性があるため、頻繁にデータをリロードしたくないことを確認する必要がありますが、それだけだと思います。

于 2013-06-21T08:41:42.827 に答える