如何通過Hibernate/JPA的位元組碼增強進行屬性延遲載入?
預設情況下,Hibernate/JPA實體的屬性是急切載入的(一次性全部載入)。你確定這是想要的嗎?
如果不是,那麼重要的是要知道可以通過Hibernate位元組碼檢測來延遲載入屬性(另一種方法是通過子實體)。這對於儲存大量資料的列型別有用:CLOB,BLOB,VARBINARY,等。
關鍵點:
- 對於Maven,在pom.xml,啟用Hibernate位元組碼檢測(例如,如下使用Maven位元組碼增強外掛)
- 標記應該延遲載入的列 @Basic(fetch = FetchType.LAZY)
實現案例:
- 建立一個新使用者: localhost:8080/new
- 獲取沒有頭像的使用者(這是圖片javax.persistence.Lob- 因此,大量資料:localhost:8080/user
- 使用頭像獲取使用者(懶惰載入): localhost:8080/avatar
原始碼可以在這裡 找到 。