Hibernate對多表關聯查詢

來源:互聯網
上載者:User
  由於公司項目的需要,我對Hibernate對多表關聯查詢研究了一下,現總結如下,供朋友參考。

  一、 Hibernate簡介Hibernate是一個JDO工具。它的工作原理是通過檔案(一般有兩種:xml檔案和properties檔案)把值對象和資料庫表之間建立起一個映射關係。這樣,我們只需要通過操作這些值對象和Hibernate提供的一些基本類,就可以達到使用資料庫的目的。例如,使用Hibernate的查詢,可以直接返回包含某個值對象的列表(List),而不必向傳統的JDBC訪問方式一樣把結果集的資料逐個裝載到一個值對象中,為編碼工作節約了大量的時間。Hibernate提供的HQL是一種類SQL語言,它和EJBQL一樣都是提供對象化的資料庫查詢方式,但HQL在功能和使用方式上都非常接近於標準的SQL.

  二、 Hibernate與JDBC的區別Hibernate與JDBC的主要區別如下:

  1、 Hibernate是JDBC的輕量級的對象封裝,它是一個獨立的對象持久層架構,和App Server,和EJB沒有什麼必然的聯絡。Hibernate可以用在任何JDBC可以使用的場合,從某種意義上來說,Hibernate在任何場合下取代JDBC.

  2、 Hibernate是一個和JDBC密切關聯的架構,所以Hibernate的相容性和JDBC驅動,和資料庫都有一定的關係,但是和使用它的Java程式,和App Server沒有任何關係,也不存在相容性問題。

  3、 Hibernate是做為JDBC的替代者出現的,不能用來直接和Entity Bean做對比。

  三、 Hibernate 進行多表關聯查詢Hibernate對多個表進行查詢時,查詢結果是多個表的笛卡爾積,或者稱為“交叉”串連。 例如:from Student, Book from Student as stu, Book as boo from Student stu, Book boo注意:讓查詢中的Student和Book均是表student和book對應的類名,它的名字一定要和類的名字相同,包括字母的大小寫。別名應該服從首字母小寫規則是一個好習慣,這和Java對局部變數的命名規範是一致的。

  下面列舉一個完整的例子來說明Hibernate對多個表進行關聯查詢(其中粗體是我們要特別注意的地方,相應表tBookInfo和BookSelection的結構和其對應的hbm.xml、class檔案就不一一列舉了,有需要詳細瞭解的朋友,請聯絡我):

String sTest = "from tBookInfo book, BookSelection sel where book.id = sel.bookId";
Collection result = new ArrayList();
Transaction tx = null;
try {
 Session session = HibernateUtil.currentSession();
 tx = session.beginTransaction();
 Query query = session.createQuery(sql);
 result = query.list();
 tx.commit();
} catch (Exception e) {
 throw e;
} finally {
 HibernateUtil.closeSession();
}
ArrayList sList = (ArrayList) result;
Iterator iterator1 = sList.iterator();
while (iterator1.hasNext()) {
 Object[] o = (Object[]) iterator1.next();
 tBookInfo bookInfo = (tBookInfo) o[0];
 BookSelection bookSelect = (BookSelection) o[1];
 System.out.println("BookInfo-Title: " + bookInfo.getTitle());
 System.out.println("BookSelection-BookSelectionId: " + bookSelect.getId());
}

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。