Hibernate 中延遲載入和立即載入的區別
延遲載入和立即載入是 Hibernate 和 Eclipse Link 等 ORM 框架中的兩種資料載入策略。當一個實體類引用其他實體(例如,員工和電話)時,我們會使用這些資料載入策略。
延遲載入 - 只有在顯式呼叫 getter 方法或 size 方法時才會載入關聯資料。
- 當使用一對多集合時,使用延遲載入。
- 當確定不使用相關實體時,使用延遲載入。
立即載入 - 在載入父實體時,同時載入資料。
- 當關係數量不多時,使用立即載入。因此,立即載入是減少伺服器額外查詢的好方法。
- 當確定始終需要使用與主實體相關的實體時,使用立即載入。
| 序號 | 關鍵點 | 延遲載入 | 立即載入 |
|---|---|---|---|
| 1 | 獲取策略 | 在延遲載入中,只有在顯式呼叫 getter 方法或 size 方法時才會載入關聯資料。 | 在立即載入中,在載入父實體時同時載入資料。 |
| 2 | ORM 層中的預設策略 | 多對多和一對多關聯預設使用延遲載入策略。 | 多對一和一對一關聯預設使用延遲載入策略。 |
| 3 | 載入配置 | 可以使用註解引數啟用它fetch = FetchType.LAZY | 可以使用註解引數啟用它fetch = FetchType.EAGER |
| 4 | 效能 | 初始載入時間比立即載入小得多 | 載入太多不必要的資料可能會影響效能 |
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP