簡體   English   中英

休眠,將域對象寫入接口以進行延遲加載

[英]Hibernate, writing domain objects to an interface for lazy loading

為什么休眠需要將其實體寫入接口才能使其在延遲加載中正常工作?

休眠需要接口的唯一情況是集合。 這是因為hibernate將自己的集合實現(例如PersistentBagPersistentSet等)用於延遲加載,並將其分配給您的字段。 這些實現保留對會話的引用,以便它們可以在需要時填充其數據。

Hibernate可以將PersistentSet分配給private Set<Foo> set; (它們通過反射來完成),但是對於private HashSet<Foo> set;則無法做到private HashSet<Foo> set; ,因為PersistentSet不會擴展HashSet

至於懶惰的@*ToOne關聯@*ToOne使用javassist(或cglib)創建一個代理對象,並且不需要接口。 無論如何,這是一個很少使用的功能,並且代理是實際對象的子類,因此,除非您使用getclass() (您不應該這樣做),否則它工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM