簡體   English   中英

Hibernate - 字節碼檢測和字節碼增強之間的區別?

[英]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不兼容,因此需要再次從源構建任何現有的檢測類。

我可以通過使用字節碼檢測來解決我的問題,但它不能通過使用字節碼增強來工作。 你知道為什么嗎 ?

也許,這個新功能還沒有完全開發出來?

謝謝你的幫助。

答案是字節碼增強的方式。 讓我們看看兩種情況都會發生什么

  1. 字節碼檢測:在“運行時”期間向Java類添加字節碼。它不是在運行時,而是在Java類的“加載”時間內更多。 此外,您可以詳細閱讀這篇文章

  1. 字節碼增強:可以在運行時或構建時(離線)執行字節碼增強。 在運行時執行增強時,持久類在加載時會得到增強。 離線執行增強時,在編譯后步驟中增強類文件;

    在大多數字節碼增強的情況下,它們是在后編譯時完成的。 如果您的Hibernate字節碼增強是這種情況,那么更改代碼的明顯選擇是字節代碼檢測。

暫無
暫無

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

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