1. 程式人生 > >Hibernate查詢效率

Hibernate查詢效率

本文主要測試兩種Hibernte檢索的效率:
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做業務處理比載入物件再做處理要好很多。