国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Hibernate對多表關聯查詢

2019-11-18 13:34:06
字體:
來源:轉載
供稿:網友

    由于公司項目的需要,我對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());
}

關于作者:
楊曉,計算機碩士,曾在NEC、Softbrain 擔任java開發工作。
博客:http://blog.sina.com.cn/u/1237288325



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 建德市| 隆化县| 穆棱市| 大石桥市| 福建省| 枣强县| 麦盖提县| 肇庆市| 平舆县| 曲麻莱县| 新兴县| 聂荣县| 新营市| 阜新| 台东县| 师宗县| 华亭县| 洪泽县| 商洛市| 当涂县| 六枝特区| 万宁市| 芒康县| 石屏县| 探索| 嵊泗县| 依兰县| 米易县| 马关县| 从化市| 万载县| 翼城县| 岢岚县| 屏山县| 汶上县| 安平县| 庆城县| 同仁县| 文山县| 府谷县| 台南县|