HIbernate多表查詢4種方法

2021-08-09 17:10:52 字數 2293 閱讀 4320

hibernate的4種查詢方法中並不全部常用請按照個人的專案要求進行修改

ps:以下方法名均為本人自擬請勿用於正式檔案

本方法是利用已知的查詢內容,在entity(實體類所在package)層新建一實體類來儲存查詢內容。

例如:有兩個實體類,班級和學校,其中學校對班級為一對多關係

//hibernate hql語句 tclass 為實體類名

string hql = "from tclass t inner join t.school"

; //classes為新建的實體類,其中含有要查詢的學校與班級的

listlist = new arraylist();

//資料庫連線語句

session session = hibernatesessionfactory.getsession();

//執行hql語句獲得查詢結果

query q = session.createquery(hql);

//將查詢結果進行迭代處理

iterator it = q.iterate();

//獲取迭代器返回值,並對classes進行賦值處理,最後將classes存集合當中

while(it.hasnext())

此後獲取list 的返回值進行輸出,此方法利用hibernate的懶載入機制

優點:清楚明了的顯示你需要的字段的資料

缺點:過程繁瑣,**復用性差

此方法是利用實體類中已有的連線方法進行賦值輸出

例如:有兩個實體類,班級和學校,其中學校對班級為一對多關係

//hibernate hql語句 tclass 為實體類名

string hql = "from tclass t inner join t.school";

listlist = new arraylist();

//資料庫連線語句

session session = hibernatesessionfactory.getsession();

//執行hql語句獲得查詢結果

query q = session.createquery(hql);

//將查詢結果進行迭代處理

iterator it = q.iterate();

//獲取迭代器返回值,直接將school新增到tclass中已經存在的get方法中

while(it.hasnext())

此後獲取list 的返回值進行輸出

優點:**內容明顯清楚

缺點:依舊使用hibernate 的懶載入機制

此方法是利用實體類中已有的連線方法直接進行輸出

例如:有兩個實體類,班級和學校,其中學校對班級為一對多關係

//hibernate hql語句 tclass 為實體類名

string hql =

"from tclass t inner join fetch t.school";

list

list

=new arraylist();

//資料庫連線語句

session session = hibernatesessionfactory.getsession();

//執行hql語句獲得查詢結果

query q = session.createquery(hql);

//直接返回集合

return q.

list();

此後獲取list 的返回值進行輸出

優點:**內容明顯清楚,不經過hibernate懶載入機制,提高了**的效率

此方法是利用實體類中已有的連線方法直接進行輸出

例如:有兩個實體類,班級和學校,其中學校對班級為一對多關係

//hibernate hql語句 tclass 為實體類名

string hql =

"from tclass";

list

list

=new arraylist();

//資料庫連線語句

session session = hibernatesessionfactory.getsession();

//執行hql語句獲得查詢結果

query q = session.createquery(hql);

//直接返回集合

return q.

list();

此後獲取list 的返回值進行輸出

優點:**內容明顯清楚

缺點:使用hibernate懶載入機制

hibernate多表查詢

在沒有使用select的時候,返回的是乙個 student物件,否則返回的是乙個物件陣列 object ilist userlist session.find from testmssql.student as student where student.name 張三 nhibernate.nhi...

Hibernate之多表查詢

原生sql多表查詢 1.交叉連線 笛卡爾積 select from a,b 2.內連線 1 隱式內連線 select from a,b where b.aid a.id 2 顯示內連線 select from a inner join b on b.aid a.id 3.外鏈結 1 左外連線 sel...

hibernate多表查詢HQL

innerjoin 內連線 left outerjoin 左外連線 right outerjoin 右外連線 fulljoin 全連線,並不常用 sql中的條件用on即 leftjoin.on.hql中的條件用with即 leftjoin.with.語句innerjoin,left outerjoi...