hibernate 查詢全部資料的三種方法

2022-03-26 13:32:53 字數 1554 閱讀 7453

使用query物件需要寫hql語句,使用hql語句操作的是實體類和屬性。

用於查詢全部的hql語句:from 實體類名稱

例:string hql = "from usersentity";//準備hql語句

query query = session.createquery(hql);//建立query物件

listusersentitys = query.list();//呼叫query方法進行查詢

使用這個物件查詢全部資料,不需要寫語句,直接呼叫方法實現即可

例:criteria criteria=session.createcriteria(usersentity.class);//建立criteria物件,此方法需要給出實體類名稱

listusersentitys=criteria.list();//呼叫criteria方法進行查詢

使用這個物件查詢全部資料,需要寫底層sql。

例:sqlquery sqlquery=session.createsqlquery("select * from users");//建立sqlquery物件,需要傳入底層sql語句

sqlquery.addentity(usersentity.class);//返回的list是陣列,需要將其轉換成實體類物件

listusersentitys=sqlquery.list();//呼叫方法進行查詢

flush-強制提交重新整理session

clear--清除session

evict(obj)將物件例項從session快取清除

session.flush() 不是必須呼叫的

session.close()是必須呼叫的

session.clear()寫在flush後面

解釋session.flush()的呼叫牽扯到事務,首先我們知道在執行事務之前都會將autocommit設定為false【手動提交方式,因為預設是true自動提交的】 當autocommit為false時 我們執行完事務就要呼叫到session.flush();session.clear();一切處理完後我們要close掉當前的這個session但是當我們不做事務操作的時候 我們就沒必要去呼叫session.flush()和session.clear()。直接session.close()就ok 因為這時close會預設呼叫一次session.flush()。如果使用了threadlocal那麼就要在close方法裡處理一下threadlocal。session.flush()的作用是將資料庫與快取中的資料同步 當session.clear()後才會引起快取資料變化

方式一:基於實體類屬性

對於實體的po類,有2個要求:

1,必須繼承serializable介面

2,必須重寫equals()方法和hashcode()方法(個人認為不是必須重寫,只要其預設hascode能唯一的確定任何乙個person類即可,當然使用聯合主鍵欄位firstname和lastname重寫equals()方法和hashcode()方法後,即可通過firstname和lastname唯一確定乙個person類,更符合資料庫中firstname和lastname做為聯合主鍵的設計)

Hibernate查詢所有資料

使用query物件,不需要寫sql語句,但是要寫hql語句 hql和sql的區別 sql操作表和表字段,hql操作實體類和屬性 建立query物件 引數 form 實體類名稱 query query session.createquery from user 單用query物件裡面的方法得到結果 l...

hibernate資料庫分頁查詢

每頁顯示10條記錄,顯示書籍資訊的第二頁 public static void main string args hibernatesessionfactory.closesession 子查詢 查詢出從來沒有購買任何書籍的使用者public static void main string args...

QBC資料查詢 hibernate之查詢語句

敘 之前介紹過hibernate的hql hibernate query language 的查詢資料方式,現在我學習記錄一下關於hibernate的另乙個查詢資料的方式 qbc,qbc資料查詢全稱是 query by criteria資料查詢 下面是我學習的筆記 qbc query by crit...