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

通常使用延迟加载作为调整机制,例如,如果您正在加载所有数据并且没有注意到任何性能问题,那么事实是您可能不需要担心(稍微)增加的复杂性延迟加载模式。

但是,如果您注意到性能问题,那么您应该查看模式,识别最常用的数据(如您在上面提到的用 * 标记的数据),然后只加载该数据。您将需要一些性能分析来确定您确实需要额外数据(未标记为 * 的字段)的时间是否会降低系统性能/减慢同一域中的任何其他操作(依赖或依赖于您描述的操作)

如果您使用的是 .NET 4.0(及更高版本),则Lazy<T>可以帮助降低实现延迟加载的一些复杂性(它也为您处理线程安全!)这篇代码项目文章可以帮助实现

于 2013-06-21T08:44:37.863 回答
0

There is a reason for lazy loading. If you know you wont use your specific data a lot it is just about right to load it lazy. You should avoid it if your not completely familiar with lazy loading as you might cause errors. Mostly thats dedicated to specific technologies, i am just thinking of jpa hibernate. In case of Lazy Init you should make sure you dont want to reload your data too often as you could run into performance problems, but i guess thats it.

于 2013-06-21T08:41:42.827 回答