乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Hibernate對多表關聯(lián)查詢

       jinhao2003 2008-09-02
      Hibernate對多表關聯(lián)查詢
      http://www. 2007-4-12 【字體: 繁體
        由于公司項目的需要,我對Hibernate對多表關聯(lián)查詢研究了一下,現(xiàn)總結如下,供朋友參考。

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

        二、 Hibernate與JDBC的區(qū)別Hibernate與JDBC的主要區(qū)別如下:

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

        2、 Hibernate是一個和JDBC密切關聯(lián)的框架,所以Hibernate的兼容性和JDBC驅動,和數(shù)據(jù)庫都有一定的關系,但是和使用它的Java程序,和App Server沒有任何關系,也不存在兼容性問題。

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

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

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

      String sTest = "from tBookInfo book, BookSelection sel where book.id = sel.bookId";
      Collection result = new ArrayList();
      Transaction tx = null;
      tr
      y {
       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());
      }

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多