Hibernate查詢效率
阿新 • • 發佈:2019-02-12
本文主要測試兩種Hibernte檢索的效率:
1. 只訪問一次資料庫,將所有需要的物件檢索出來,然後資料庫外部做業務邏輯處理
2. 利用HQL的函式做業務邏輯處理,但需要多次訪問資料庫。
測試1程式碼:
測試2程式碼:
執行後發現第一種方法耗費時間為:900ms, 第二種方法耗費時間為:180ms
由此說明:
1. 利用Hibernate直接載入物件是比較耗時的。
2. 儘可能利用HQL自帶的函式來處理,又是雖然這樣會造成多次的資料庫訪問,但依然有很高的效率。
3. 利用HQL/SQL做業務處理比載入物件再做處理要好很多。
1. 只訪問一次資料庫,將所有需要的物件檢索出來,然後資料庫外部做業務邏輯處理
2. 利用HQL的函式做業務邏輯處理,但需要多次訪問資料庫。
測試1程式碼:
private static final String HQL1 =
"from Object object where object.uuid in ";
@Override
public void find1(String ids) {
for (int i = 0; i < 10; i++) {
this.find(HQL1+ "(" + ids + ")" );
}
}
測試2程式碼:
private static final String HQL2 =
"select count(distinct object1.uuid) from Object1 object1 where object1.object2.uuid = ?";
@Override
public void find2(String ids) {
String [] idArray = ids.split(",");
for (String id : idArray) {
this.find(HQL2, new Object[]{Long.valueOf(id)});
}
}
執行後發現第一種方法耗費時間為:900ms, 第二種方法耗費時間為:180ms
由此說明:
1. 利用Hibernate直接載入物件是比較耗時的。
2. 儘可能利用HQL自帶的函式來處理,又是雖然這樣會造成多次的資料庫訪問,但依然有很高的效率。
3. 利用HQL/SQL做業務處理比載入物件再做處理要好很多。