[英]Hibernate - Difference between bytecode instrumentation and bytecode enhancement?
我正在使用Hibernate 4.2和構建時間字節碼檢測來解決@OneToOne
關系和@Lob
上出現的懶惰問題( https://developer.jboss.org/wiki/SomeExplanationsOnLazyLoadingone-to-one )
你知道之間有什么區別:
Hibernate字節碼檢測: http : //docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch20.html#performance-fetching-lazyproperties
Hibernate字節碼增強: http : //docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch20.html#bytecode-enhancement
因為在hibernate文檔中,它寫成:
EnhancementTask旨在作為InstrumentTask的完全替代品。 此外,它也與InstrumentTask不兼容,因此需要再次從源構建任何現有的檢測類。
我可以通過使用字節碼檢測來解決我的問題,但它不能通過使用字節碼增強來工作。 你知道為什么嗎 ?
也許,這個新功能還沒有完全開發出來?
謝謝你的幫助。
答案是字節碼增強的方式。 讓我們看看兩種情況都會發生什么
和
字節碼增強:可以在運行時或構建時(離線)執行字節碼增強。 在運行時執行增強時,持久類在加載時會得到增強。 離線執行增強時,在編譯后步驟中增強類文件;
在大多數字節碼增強的情況下,它們是在后編譯時完成的。 如果您的Hibernate字節碼增強是這種情況,那么更改代碼的明顯選擇是字節代碼檢測。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.