• <menu id="w2i4a"></menu>
  • logo MyEclipse數(shù)據(jù)庫教程

    文檔首頁>>MyEclipse數(shù)據(jù)庫教程>>MyEclipse數(shù)據(jù)庫教程:Hibernate開發(fā)

    MyEclipse數(shù)據(jù)庫教程:Hibernate開發(fā)


    下載MyEclipse  購買MyEclipse

    1、什么是Hibernate?

    Hibernate是一種非常流行的、基于Java的開源對象關(guān)系映射(JORM)引擎,易于啟動和運行,提供了豐富的功能,包括:

    • 多種映射策略

    • 傳遞持久性

    • 單對象到多表的映射

    • 集合支持

    • 多態(tài)關(guān)聯(lián)

    • 可自定義的SQL查詢

    Hibernate用于在運行時將數(shù)據(jù)庫結(jié)構(gòu)映射到Java對象。使用像Hibernate這樣的持久性框架,開發(fā)人員可以專注于編寫業(yè)務(wù)邏輯,而不是編寫準確、高效的持久性層(包括DAO、SQL查詢、JDBC代碼、連接管理等)。

    任何需要在Java應(yīng)用程序?qū)ο蠛蛿?shù)據(jù)庫表之間移動數(shù)據(jù)的Java應(yīng)用程序都可以使用Hibernate。因此,它在開發(fā)兩層和三層Java EE應(yīng)用程序中非常有用。將Hibernate集成到您的應(yīng)用程序中涉及:

    • 將Hibernate核心和支持JAR庫安裝到項目中

    • 創(chuàng)建一個hibernate.cfg.xml文件來描述如何訪問數(shù)據(jù)庫

    • 為每個可持久的Java類創(chuàng)建單獨的映射描述符文件

    1.1導(dǎo)致Hibernate的歷史

    在Java數(shù)據(jù)庫和Web編程的早期,開發(fā)人員使用java.sql包提供的不同類訪問其數(shù)據(jù)庫,這包括從DriverManager獲取驅(qū)動程序、創(chuàng)建和使用連接、正確處理異常、關(guān)閉連接等。在此階段,一個常見的問題是忘記清理數(shù)據(jù)庫連接,并在它們運行了一段時間后在應(yīng)用程序中得到連接異常的反饋。

    幾年后,連接池成為一個大話題,因為它們讓開發(fā)人員不用再擔(dān)心創(chuàng)建和管理(清理)數(shù)據(jù)庫連接,而是把精力集中在他們的SQL和ResultSet解析代碼上。突然之間,長時間運行的應(yīng)用程序中數(shù)據(jù)庫連接異常的問題基本解決了。但是,仍然經(jīng)??吹綌?shù)百行樣板代碼用于用值填充查詢并解析SQL查詢返回的ResultSet。

    又過了幾年,有人想到了將ResultSet結(jié)果直接自動映射到Java對象的方法,這在很大程度上解決了所有冗余樣板解析代碼的問題。那時,Java數(shù)據(jù)庫開發(fā)已經(jīng)邁出了幾大步,并且變得越來越簡單。然后,Hibernate模式為人熟知。

    隨著Hibernate的出現(xiàn),不僅這些東西會繼續(xù)自動化,Hibernate也會管理內(nèi)存中對象的狀態(tài),它會擔(dān)心何時以及如何從數(shù)據(jù)庫讀取或?qū)懭雽ο笾怠,F(xiàn)在,開發(fā)人員只處理對象(或映射對象),Hibernate則處理其他所有內(nèi)容。開發(fā)人員不再編寫JDBC和SQL代碼。相反,他們使用的是為他們工作的代碼。

    當(dāng)Hibernate出現(xiàn)時,另一種可用的持久性技術(shù)是EJB2.x。Hibernate的時間安排、易用性和強大功能都是Java領(lǐng)域在相當(dāng)長一段時間內(nèi)所采用的最快技術(shù)之一。

    2、Hibernate項目配置

    您可以通過創(chuàng)建任何受支持類型的基礎(chǔ)項目(例如Java或Web項目)添加Hibernate facet,來創(chuàng)建啟用了hibernate的項目。MyEclipse為您創(chuàng)建一個hibernate.cfg.xml文件,您必須指定數(shù)據(jù)庫連接詳細信息。

    您也可以通過打開項目的Project Facets屬性,將多個構(gòu)面同時添加到項目中。

    facets_properties.png

    2.1Hibernate映射和配置

    Hibernate用Java編寫,可以通過兩種類型的配置文件進行高度配置。第一種配置文件名為hibernate.cfg.xml。啟動時,Hibernate會查詢此XML文件的操作屬性,例如數(shù)據(jù)庫連接字符串和密碼、數(shù)據(jù)庫方言以及映射文件的位置。Hibernate在類路徑上搜索此文件。

    hibernate_caps_and_config_file.png

    第二種類型的配置文件是映射描述(文件擴展名* .hbm),它指示Hibernate如何在特定的Java類和一個或多個數(shù)據(jù)庫表之間映射數(shù)據(jù)。MyEclipse提供了用于處理所有這些配置文件類型的工具,并在您更改數(shù)據(jù)庫和Hibernate映射的Java類時使它們保持同步。編輯器具有以下功能:

    • 基于表單的高級編輯器和隨附的向?qū)?/p>

    • 超鏈接導(dǎo)航到引用的類和屬性

    • 類名自動完成

    • 屬性名稱自動完成

    • 內(nèi)容有助于映射文件元素、屬性和值。

    hibernate-mapping-editor.gif

    3、逆向工程數(shù)據(jù)庫表

    您可以將數(shù)據(jù)庫表信息反向工程為Hibernate(Java)對象,然后將它們添加到項目中。為了最大程度地控制生成的Hibernate對象,可以在向?qū)е羞x擇詳細信息,例如主鍵生成策略、對象名稱、類型等。

    在Database Explorer透視圖中,可以查看所連接的數(shù)據(jù)庫的內(nèi)容。在DB瀏覽器中,右鍵單擊要反向工程的表,然后從菜單中選擇Hibernate Reverse Engineering。完成向?qū)Ш?,系統(tǒng)將提示您切換到Hibernate透視圖。

    這些類將生成到在向?qū)е羞x擇的Java包中。

    對數(shù)據(jù)庫表進行反向工程時,實體將顯示在配置文件的Mappings部分中。

    4. HQL Editor

    HQL Editor以及Hibernate透視圖中的其他HQL視圖可幫助開發(fā)、評估或測試HQL查詢。HQL是一種類似于SQL的語言,稱為Hibernate查詢語言。它有時看起來像是簡化的SQL,使用對象名和引用而不是表名和列名。該編輯器具有以下功能:

    • 內(nèi)容輔助

    • 輸入時,Hibernate動態(tài)查詢轉(zhuǎn)換器視圖將HQL查詢轉(zhuǎn)換為SQL。

    • Hibernate Query Results視圖可以包含多個結(jié)果集。結(jié)果屬性顯示在Properties視圖中。

    • 查詢參數(shù)視圖可輕松執(zhí)行變量查詢

    • 項目選擇器,可以在不同的Hibernate項目之間切換上下文。

    使用HQL Editor,可以即時編寫并運行HQL。編輯器利用MyEclipse從數(shù)據(jù)庫進行反向工程的對象,將查詢轉(zhuǎn)換為SQL(如右下所示),然后運行它。結(jié)果在Java對象中返回,并顯示在左下角。

    hibernate-hql-1-annot.png

    對數(shù)據(jù)庫進行反向工程之后,就可以開始編寫應(yīng)用程序以讀取、寫入和更新數(shù)據(jù)庫中的對象。放置好Java類和方法后,可以在HQL Editor中運行Hibernate查詢來查詢數(shù)據(jù)庫,這是查詢數(shù)據(jù)庫的另一種方法。您還可以切換到Database Explorer透視圖并從那里查詢數(shù)據(jù)庫以查看相同的結(jié)果。

    5、Criteria Editor

    除了HQL編輯器之外,MyEclipse Hibernate工具還包括一個Criteria編輯器。Hibernate中的Criteria是一種利用對象實例結(jié)合查詢約束來針對實體創(chuàng)建查詢的方法。例如,假設(shè)創(chuàng)建一個類型為User的實體實例,將實體指定為查詢的條件,并告訴條件只返回前10個結(jié)果,這是創(chuàng)建用于實體的復(fù)雜查詢的有效且快速的方法。

    要訪問Criteria Editor,請右鍵單擊包含Hibernate facet的項目,然后選擇MyEclipse > Open Criteria Editor。

    打開Criteria Editor后,可以在編輯器中輸入任何表示條件的有效Java代碼,并使用編輯器頂部的“Run”圖標執(zhí)行它們。

    下面的示例顯示了一個基于EchoMessage實體的簡單條件,要求Hibernate返回其EchoMessageId值為2的實體。結(jié)果出現(xiàn)在Result視圖中。

    hibernate_criteria.png

    可以使用MyEclipse中的Criteria Editor來編寫和執(zhí)行任何有效的基于條件的代碼。在Java編輯器中輸入條件時,選擇它并調(diào)用快速修復(fù)將顯示“Copy to Criteria”編輯器操作。選擇此操作將打開“Criteria”編輯器,并使用所選文本進行初始化。

    您可以在Criteria Editor中測試和編輯條件。完成后,關(guān)閉編輯器可用修改后的條件查詢替換最開始選擇的文本。

    6、常見問題

    Q:Hibernate與EJB 3/JPA相比如何? 

    A:Hibernate 3.2實際上是與JPA兼容的,它實現(xiàn)了所有新的注釋,這些注釋讓JPA使用起來非常自動化且更簡單。因此,除了使用JPA的commercial implementation外,還可以使用Hibernate,所有標準JPA批注仍將保留在類中,而無需進行任何更改。

    Q:Hibernate可以擴展到非常大的應(yīng)用程序嗎?

    A:可以。實際上,Hibernate的根源來自于兩位創(chuàng)始人在大型企業(yè)應(yīng)用程序中擔(dān)任顧問的經(jīng)驗,Hibernate是他們對持久性在應(yīng)用程序中應(yīng)如何起作用的看法。

    幾年前,Gavin King向社區(qū)提出了一項挑戰(zhàn),要求找到手工調(diào)整的JDBC SQL。該SQL執(zhí)行的幅度要比Hibernate生成的SQL快,由此也能看出該框架非常注重功能、靈活性和性能。



    想進一步了解MyEclips?【MyEclipse官方中文網(wǎng)】知你所需,解你所惑!

    想與更多人聊MyEclips?加入MyEclipse中國(官方2):742336981暢所欲言吧!

    想及時獲取MyEclips資訊?掃描下方二維碼,MyEclips信息跟你走!

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();