我想问一下延迟加载。我经常读到我们应该否认它,但为什么要加载可能从未使用过的数据?
作为讨论的示例,我们使用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
*
根据座右铭“仅加载你需要的东西”来标记我将懒惰加载的对象。
好吧好像我的问题不够明确,所以这里可能是我想知道的更好的表述:
我想知道为什么大多数人会从懒惰的负载中劝阻,是因为他们不能使用它还是它有非常糟糕的缺点?
答案 0 :(得分:2)
通常使用Lazy Load作为调整机制,例如,如果您正在加载所有数据并且没有注意到任何性能问题,那么事实上您可能不需要担心自己(稍微)增加了延迟加载模式的复杂性。
但是,如果您注意到性能问题,那么您应该查看模式,确定最常用的数据(如上所述,标记为*的数据),并且只加载该数据。您需要进行一些性能分析,以确定是否需要额外数据(字段未标记*)会降低系统性能/减慢同一域中的任何其他操作(依赖于或依赖于你正在描述的操作)
如果您使用的是.NET 4.0(及更高版本),Lazy<T>
可以帮助降低实现Lazy Load的一些复杂性(它也会为您提供线程安全性!)This Code Project article can help with the implementation
答案 1 :(得分:0)
延迟加载是有原因的。如果你知道你不会经常使用你的特定数据,那就是加载懒惰的权利。如果你不完全熟悉延迟加载,你应该避免它,因为你可能会导致错误。主要是致力于特定技术,我只是想jpa hibernate。在Lazy Init的情况下,你应该确保你不想经常重新加载你的数据,因为你可能遇到性能问题,但我想是的。