MyEclipse Hibernate 快速入門中文版

HTML完整版本下載地址: http://beansoft.java-cn.org/download/MyEclipse_Hibernate_Quickstart_zh_CN.zip 719KB

不帶圖的 HTML 正文:

MyEclipse Hibernate 快速入門 中文版

翻譯: 劉長炯([email protected])
Blog: http://www.blogjava.net/beansoft/
可自由傳播, 未經作者許可不得用於商業用途(如付費培訓等).
注: 此文檔原文(英文)位於 MyEclipse 安裝後的幫助文檔中.

最後修改: 八月 15, 2007

MyEclipse Enterprise Workbench


提綱

  1. 前言
  2. 準備工作
  3. 介紹
  4. Hibernate 一覽
  5. 創建 HibernateDemo 項目
    1. 創建 HibernateDemo  Java Project
    2. 添加 Hibernate Capabilities
    3. 自定義 Hibernate 配置文件
    4. 創建 Hibernate Java 表映射
    5. 使用模版調整生成更好的代碼
    6. 使用自定義反向工程策略
    7. 編輯映射文件
  6. 使用 HQL 編輯器
  7. 測試 HibernateDemo 應用
  8. 使用示例 HibernateDemo 項目
  9. 總結
  10. 用戶反饋
  11. 資源

1. 前言

本文檔基於以下環境編寫: Sun JDK 1.5, Eclipse 3.2 和 MyEclipse 5.0. 所有的截屏基於 Eclipse, MyEclipse Enterprise Workbench, 和 Windows XP 的默認用戶界面設置. 如果你對本文檔的介紹有閱讀上的困難, 請閱讀 用戶反饋 部分來了解如何向 MyEclipse 文檔團隊提交反饋.

返回頁首


2. 準備工作

下面是這個快速入門的準備工作列表:

  1. Java 2 SDK, Standard Edition 1.4 或者更高版本(參考 資源 來了解下載地址)

  2. Eclipse 3.2 SDK (參考 資源 來了解下載地址)

  3. MyEclipse 5.0 (參考 資源 來了解下載地址)

  4. 選擇以下可以被 Hibernate 和 MyEclipse Database Explorer 所支持的數據庫服務器列表中的一個:

  • Axion

  • Hypersonic DB

  • InstantDB

  • Interclient

  • Firebird

  • ODBC Bridge

  • jTDS

  • Mckoi

  • Microsoft SQL Server

  • Mimer SQL

  • MySQL

  • Oracle

  • Pointbase

  • PostgresQL

  • SAPDB

  • Sunopsis XML

  • Sybase

  • ThinkSQL

返回頁首


3. 介紹

這個快速入門展示了使用 MyEclipse Enterprise Workbench 開發 Hibernate 的基本功能, 概念和技術. 我們將全程帶領你來開發一個非常簡單的 Java Hibernate 應用. 對於這個教程沒有包含到的問題和概念, 我們推薦你去參考 資源 部分列出的 Hibernate 資源.

這個文檔展示瞭如何進行下列工作:

  • 爲 Java 項目添加 MyEclipse Hibernate 支持

  • 在項目中創建 Hibernate 配置文件

  • 如何使用自定義的 Session Factory

  • 從 Database Explorer 的表定義中生成 Java 類和 Hibernate 數據庫映射文件 (.hbm)

  • 使用 HQL 編輯器
  • 創建使用 Hibernate 的小測試應用

注意: 在使用本教程時建議您事先閱讀了 Database Explorer 快速入門 這個教程來了解如何創建連接和元數據功能.

返回頁首


4. Hibernate 一覽

Hibernate 是一個非常流行的開源的易於配置和運行的基於 Java 的對象-關係映射(JORM) 引擎. 它提供了很豐富的功能包括:

  • 多種映射策略

  • 可遷移的持久化

  • 單個對象映射到多個表

  • 支持集合

  • 多態關聯

  • 可自定義的 SQL 查詢

Hibernate 使用 Java 編寫, 是高可配置的軟件包, 可以通過兩種配置文件格式來進行配置. 第一種配置文件名字爲 hibernate.cfg.xml. 在啓動時, Hibernate 查詢這個 XML 裏面的屬性來進行操作, 例如數據庫連接字符串和密碼, 數據庫方言(database dialect), 以及映射文件位置等. Hibernate 在類路徑中查找這個文件. 第二種配置文件是映射描述文件(文件擴展名爲 *.hbm), 它來指示 Hibernate 如何來將特定的 Java 類和一個或者多個數據庫表格中的數據進行映射. MyEclipse 提供了工具來處理這兩種配置文件, 並且可以將它們和你對數據庫和 Hibernate 映射的 Java 類的修改進行同步.

Hibernate 可以用在任何需要將 Java 對象和數據庫表格中的數據進行移動的 Java 應用中. 因此, 它在開發兩層和三層的 J2EE 應用中很有用. 向你的應用中集成 Hibernate 包括:

  • 向你的項目中安裝 Hibernate 核心類和依賴的 JAR 類庫

  • 創建 hibernate.cfg.xml 文件來描述如何訪問你的數據庫

  • 爲每個持久化 Java 類創建單獨的映射描述文件

更多關於 Hibernate 的基本和高級特性, 或者如何使用 Hibernate 進行開發, 請查看頁面下方的 資源 部分.

返回頁首


5. 創建 HibernateDemo 項目

這一部分描述了創建名爲 HibernateDemo 的簡單的 Java 項目的過程, 這個項目使用 Hibernate 來保存文本消息到一個單獨的數據庫表格中. 因爲多數企業的網絡應用都是和企業關係數據庫中的數據進行交互, 我們將集中精力到編寫 Java 數據對象和映射文件到現有的數據庫.

我們需要映射到 Java 類的這個數據庫表格列在下面. 爲了方便測試, 我們已經向數據庫中添加了很多測試數據.

echo_message DDL

CREATE TABLE echo_message
(
    id integer PRIMARY KEY not null,
    msg VARCHAR(255)
);
insert into echo_message values(1, 'hello world');
insert into echo_message values(2, 'goodbye world');

一般的在你進行 Hibernate 開發之前你需要一個能夠訪問的 Database Explorer 連接配置. 在這個教程中, 我們使用 Oracle 數據庫連接配置, 這個配置在 Database Explorer 快速入門 教程中創建.
注意: 儘管這個快速入門使用了 Oracle, 但是這些步驟和上面的表格基本上是通用的, 可以在任何數據庫下工作.
返回頁首


5.1 創建 HibernateDemo Java Project

我們先來創建一個普通的名爲 HibernateDemo 的 Java 項目, 這個項目讀取寫入數據到 echo_message 數據庫表.

  1. 從 MyEclipse 菜單欄選擇 File > New > Project > Java Project. 接着會打開 New Java Project 嚮導.
  2. 輸入 HibernateDemo 到 Project name
  3. 在 Project Layout 下選中 Create separate source and output folders 單選鈕.
  4. 選擇 Finish 來完成這個頁面, 如圖 1 所示

    圖 1. 新建 HibernateDemo 項目

返回頁首


5.2 添加 Hibernate Capabilities 到 HibernateDemo 項目 

現在 HibernateDemo 項目已經創建, 我們將添加 MyEclipse Hibernate 功能到這個項目. 這個基於嚮導的處理過程執行了下面的操作:

  • 添加 Hibernate 類庫 (JARs) 到項目的類路徑.
  • 在項目中創建並配置 hibernate.cfg.xml
  • 在項目中創建自定義的 Session Factory 類來簡化 Hibernate 會話處理

我們通過打開 MyEclipse Add Hibernate Capabilities 嚮導來開始:

  1. Package Explorer 中選擇 HibernateDemo 項目
  2. 接下來, 從 MyEclipse 菜單欄選擇  MyEclipse > Add Hibernate Capabilities ... 來啓動向導 (參考圖 2).

    圖 2.  啓動 "Hibernate Support" 嚮導

    圖 3.  添加 Hibernate 支持到 Java 項目
  3. 保持 Hibernate 3.1 specification 選中不變.
  4. 選擇你需要的類庫集合, 在這個示例中 Core 類庫足夠了.
  5. 保持 Add checked Libraries to project build-path 選中.
  6. 選擇 Next.

表-1.  Hibernate Support 嚮導 - 第1頁選項

選項
描述

Hibernate Specification

要添加到項目中的 Hibernate 版本支持功能. 爲了最大限度的使用 MyEclipse Hibernate 工具, 推薦 Hibernate 3.1.

MyEclipse/User Libraries

可以添加到你的項目的構造路徑的類庫集合.

Add checked Libraries to project build-path

選中的類庫將會添加到你的項目的構造路徑中, 但是相應的 JAR 文件將 不會 複製到你的項目中. 這些 JAR 文件 將會 在發佈程序時複製, 這是推薦的設置方式.

Copy checked Library Jars to project folder and add to build-path

選中的類庫 JAR 文件將會被複制到你的項目並添加到構造路徑中去.

Library Folder

僅在上面的選項選中時可用.
一個相對於項目的路徑, 可以新建或者使用現有目錄, Hibernate 類庫將會被嚮導複製到這裏.

  1. 第 2 頁 允許你自定義配置文件的名字和路徑.


圖 4. Hibernate 配置文件設置

保持 New 選中. 完成圖 4 中顯示的頁面然後選擇 Next.


圖 5. Hibernate 數據庫配置

保持 Specify datasource connection details? 選中. 選中 Oracle 配置, 這個配置在 Database Explorer 快速入門 設置過, 通過 DB Profile 下拉框選擇. 這將自動填充當前頁面中的所有輸入框.
注意: 在這裏數據庫配置並非必須的; 你可以手工輸入所有需要的信息, 不需要選擇一個配置.
在這種情況下, 你必須確保在嚮導完成後手工複製 JDBC 驅動 JAR 文件到你的項目中. 選擇 Next.

上面進行的數據源配置操作可以現在跳過, 可以在隨後的 Hibernate Configuration 編輯器 中進修改.

項目的最後一步是配置一個 SessionFactory 類, 這個類將會訪問 Hibernate 功能所生成的基礎代碼. 本嚮導的截屏如圖 6 所示.


圖 6.  創建 SessionFactory 詳細信息 

表 3 - Hibernate Support 嚮導 - 第 3 頁選項

選項
描述

Create SessionFactory Class?

如果啓用, 嚮導將會創建一個 Hibernate 會話工廠的新類. 

Java source folder

決定新類將被創建到的源代碼目錄.

Java package

指定 Session 工廠將被創建到的包名.

Class name

指定 Session 工廠類的名字.

Java Compliance Level

生成的 Session 工廠類的 Java 編譯器等級.

選中  Create SessionFactory class. 選中包輸入框右側的 New 按鈕然後創建包 com.genuitec.hibernate . 給 Session Factory 類 輸入一個名字, 我們使用默認推薦的 HibernateSessionFactory. 完成如圖 6 所示的頁面, 然後選擇 Finish.
注意: Session Factory 也可以在稍後創建, 通過 Session Factory 嚮導來完成 (File > New > Other MyEclipse > Hibernate > Hibernate Session Factory).
如果你在第一頁選中了複製類庫到你的項目中, 在嚮導完成之後的至多 30 秒內可能失去反應, 因爲它將複製類庫並更新多種項目資源. 請耐心等待並在進行其它操作之前等待過程的結束.

這個嚮導結束後將進行下列操作:

  • 如果在第一頁選擇了複製類庫到你的項目, 將安裝 Hibernate 類庫 (JARs) 到項目中
  • 更新項目的構造路徑來包含已安裝的 Hibernate 類庫
  • 給項目創建並配置 hibernate.cfg.xml 文件
  • 爲你的項目創建一個自定義的 SessionFactory 類 (例如 HibernateSessionFactory) 來簡化 Hibernate 會話會話處理

圖 7 高亮顯示了新創建的 HibernateSessionFactory.java 文件裏面的重要功能. 這個類管理了一個單獨的 Hibernate Session 對象, 通過 getSession() 方法進行延遲加載並且在調用 closeSession() 方法之後刷新並釋放數據. 在運行的時候, Hibernate 會話創建過程必須要能夠訪問類路徑裏面的 hibernate.cfg.xml 文件. 變量 CONFIG_FILE_LOCATION 定義了文件 hibernate.cfg.xml 相對於包的路徑. 默認值通過 Hibernate 支持嚮導來提供. 如果你改動了 hibernate.cfg.xml 文件的位置, 你必須手工修改 CONFIG_FILE_LOCATION 的值來引用到新的文件的位置或者可以通過在使用之前調用 setConfigFile() 方法來設置爲新的路徑.


圖 7. HibernateSessionFactory 類

返回頁首


5.3 自定義 Hibernate 配置文件

完成了 5.2 部分的配置嚮導後, Hibernate 配置文件將會自動打開.
如果你在添加功能過程中跳過了數據源連接的配置, 你可以現在來完成它, 也可以跳轉到 添加屬性.

自定義配置文件裏面的需要連接到我們的數據庫的信息.

  1. 選中 Use JDBC Driver 選項.
    我們將指定 Database Explorer 中的 JDBC 驅動. 如果你尚未配置 JDBC 驅動, 請閱讀 Database Explorer 快速入門 然後在進行下面的操作之前配置一個.
  2. Connection Profile 下拉框中選中一個配置.
    如果你只是配置了 JDBC 驅動但是沒有配置一個連接屬性, 你可以選擇 New Profile 按鈕來創建一個新的連接配置. 如果你已經有了一個連接配置, 當你選擇其中的一個之後將會自動填充下面的 4 個輸入框中的內.
  3. 點擊  Copy JDBC Driver and add to classpath... 鏈接.
  4. 爲你的數據庫選中正確的 Hibernate Dialect.
你的配置頁面將會顯示爲這樣的內容:


圖 8. Hibernate 配置文件, 配置了 Oracle 連接


你可以使用 Properties 部分來添加和修改屬性.


圖 9. 添加屬性


Mappings 部分可以讓你添加也許已經存在項目中的映射文件. 另外, 從 Package Explorer 拖放 映射文件到這個輸入框也可以達到同樣的效果.



圖 10. 添加映射文件

圖 11 上述操作完成後的 Hibernate 配置文件的源代碼.


圖 11. Hibernate 配置文件

5.4 創建 Hibernate Java 表映射 

這個部分展示了使用 MyEclipse Hibernate 工具來反向工程生成 Java 數據對象並從現有的數據庫表格生成映射的過程.

  1. 打開 MyEclipse Hibernate 透視圖.  從主菜單欄, 選中 Window > Open Perspective > Other > MyEclipse Hibernate

  2. 選中你在 Hibernae 配置中所使用的數據庫連接屬性

  3. 瀏覽數據庫的目錄結構, 直到你找到了一個想要創建 Hibernate 映射的表格/實體
    注意: 在我們的例子裏我們使用了 TEST 數據庫下的 ECHO_MESSAGE 表格; 對於其它數據庫和表格的操作過程基本上都是一樣的.

  4. 右鍵點擊表格然後選中 Hibernate Reverse Engineering, 如圖 12 所示. 這將啓動 Hibernate Reverse Engineering 嚮導.
    另外, 你也可以從 DB Browser 那裏拖動表格, 然後將它放到 Hibernate 配置編輯器裏也可以啓動這個嚮導.
    注意: 你可以在 DB Browser 中選中多個表格然後同時對它們進行反向工程.


    圖 12. 對 ECHO_MESSAGE 數據庫表格啓動 Hibernate Reverse Engineering 嚮導
    Hibernate Reverse Engineering 嚮導一共有 3 頁.

    圖 13.  Hibernate Reverse Engineering 嚮導 - 頁面 1

  1. 點擊Java src folder 右側的 Browse... 按鈕來查看可用的 Hibernate 項目以及源碼目錄, 這些目錄將用來存放最終生成的文件.
    選擇 HibernateDemo 項目中的 src 文件夾.
  2. 點擊 Java package 輸入框右側的 Browse... 按鈕然後選中包 com.genuitec.hibernate
  3. 完成如圖 13 所示的嚮導中的其餘的內容然後選擇 Next.

    注意:
    嚮導的第 2 頁和第 3 頁用來自定義反向工程處理過程.
    當然也可以現在就直接點擊 Finish 按鈕開始處理過程, 不對後兩頁的設置進行任何自定義.
    表 4 - Hibernate Reverse Engineering 嚮導 - 第 1

    選項
    描述

    Java src folder

    選中映射文件, POJO 和 DAO 生成後所在的項目和源碼文件夾.

    Java package

    映射文件, POJO 和 DAO 生成後所在的包.

    Hibernate mapping file

    從選中的表格生成映射文件.

    Update hibernate configuration

    將生成後的映射文件添加到 Hibernate 配置文件中.

    Java Data Object

    爲映射文件和表格生成對應的數據對象 (POJO).

    Create abstract class

    爲每個數據對象生成一個抽象的父類. 這個抽象類將在以後的重新生成過程中覆蓋掉, 但是對應的子類將不會被覆蓋掉.

    Base persistence class

    如果需要的話, 輸入生成的 POJO 所要集成的父類的完整名稱.

    Java Data Access Object

    生成便於訪問映射後的類和表格的數據訪問對象. 用戶可以在 Basic, Spring 和 JNDI DAO 中選擇一種.

    Generate precise findBy methods

    爲映射類中的每個屬性生成一個 "findBy" 方法.
    例如 findByFirstName("name");

    Use custom templates

    覆蓋 MyEclipse 的內部 velocity 模版爲你自己的版本.
    參考 使用模版來更好的調節生成的代碼 來獲取更多信息.

    Template directory

    包含了自定義模版的目錄樹的根節點.


    圖 14.  Hibernate Reverse Engineering 嚮導 - 第 2 頁

  4. 第 2 頁可以使用默認的設置, 選擇 Next.
    表 5 - Hibernate Reverse Engineering 嚮導 - 第 2 頁

    選項
    描述

    Rev-eng settings file

    這個文件包含了反向工程的配置和選項以供以後使用. 點擊 Setup... 按鈕來選擇現有的文件或者創建一個新的文件.
    如果找不到一個這樣的配置文件的話嚮導將會自動創建此文件.

    Custom rev-eng strategy

    允許你指定一個自定義的反向工程策略類. 這個類允許你用編程的方式來自定義反向工程處理過程的各個方面. 參考 使用自定義反向工程策略 來獲取詳細信息.

    Type Mapping

    決定是否在類型映射屬性中使用 Java 或者 Hibernate 類型, 例如 java.lang.String 對應 string. 這個設置只能在嚮導第 3 頁的 Customized Type Mappings 列表中沒有指定更多信息時才能使用.

    ID Generator

    ID Generator 是 Hibernate 映射文件必須有的內容. 它定義了持久類實例的唯一主鍵生成器 Jaav 類.  參考 資源 部分裏面的 Hibernate 文檔鏈接, 裏面描述了每個 ID 生成器的詳細信息.
    如果留空或者更詳細的配置在這個嚮導的第 3 頁沒有配置, Hibernate 映射引擎將自動爲你選擇一個 ID 生成器.

    Generate basic typed composite IDs

    如果數據庫表格包含有多個列的主鍵, 將總是使用 <複合主鍵> 映射.
    如果這個選項啓用並且有對應的多個外鍵, 每個主鍵列將依然會被作爲'簡單的' 標量 (string, long, 等), 而不是引用到一個實體. 將會創建 <many-to-one> 元素, 但是它們將會標記爲非可更新和非可插入的字段.
    如果你禁用這個選項(默認推薦用這種方式), 將會創建 <key-many-to-one> 元素來代替上面的生成內容.

    Generate version and timestamp tags

    如果啓用, 名爲 "version" 和 "timestamp" 的列將會在生成的映射文件中作爲 <version><timestamp> 標記出現.

    Customized Type Mappings

    允許你來指定一個自定義的 JDBC 類型到 Hibernate 類型的轉換, 使用 Length, Scale, Precision 和 Nullability 作爲精度控制對應原來的 JDBC 類型.

  5. 再第 3 頁頁可以使用默認的設置, 選擇 Finish 將啓動反向工程處理.

    圖 15.  Hibernate Reverse Engineering 嚮導 - 第 3 頁
    表 6 - Hibernate Reverse Engineering 嚮導 - 第 3

    選項
    描述

    Class name

    對應當前數據庫表格的數據對象類的完整名稱.

    ID Generator

    想要對當前表所使用的 ID 生成器.

    JDBC type

    對當前列所使用的 JDBC 類型覆蓋.

    Property name

    對應當前列所生成的屬性名.

    Hibernate type

    對應當前列的 Hibernate 類型.

    Include referenced / referencing tables

    包含反向工程時當前數據庫表引用的表格以及其它引用到當前表的數據庫表.

    Generate support for ListedTable(fk)->UnlistedTable and UnlistedTable(fk)->ListedTable

    生成關聯到當前表格的關聯表的尚未反向工程過的代碼, 這些表在當前配置頁面尚未被顯示.

在這個嚮導完成之後將會進行下面所列的操作:

  • 創建類 AbstractEchoMessage . 這個抽象類提供了所需的 Hibernate 兼容的功能例如 public 的讀取器和設置器方法, 這些方法對應的持久化屬性和 ECHO_MESSAGE 數據庫表格中的列相對應.

  • 創建了一個 EchoMessage Java 類, 是 AbstractEchoMessage 類的一個具體的子類. EchoMessage 的目的是爲了被修改後提供額外的業務和驗證邏輯, 並且不會被後續的生成代碼過程所覆蓋.

  • 創建了 EchoMessage.hbm.xml Hibernate 映射描述符. 這個文件指示 Hibernate 如何將 EchoMessage Java 類和 ECHO_MESSAGE 數據庫表格中的數據相互映射.

  • 在文件 hibernate.cfg.xml 中註冊 EchoMessage.hbm.xml 映射描述符.

  • 創建了 Java 類 EchoMessageDAO. 這個類提供了對 EchoMessage 數據對象類的方便的訪問和操作.
  • 創建 IBaseHibernateDAO 接口和 BaseHibernateDAO 類. 這些類對基本的 DAO 來說是必要的, 因爲它使用了添加 Hibernate 功能時候所生成的 Session 工廠類(com.genuitec.hibernate.HibernateSessionFactory)來獲取 Hibernate 會話.

圖 15 高亮顯示了所生成的類, 關鍵方法和映射文件, 以及被添加到 hibernate.cfg.xml 文件中的對生成的映射文件的引用.


圖 15.  Hibernate 反向工廠嚮導執行結束後更新過的項目內容

5.5 使用模版調整生成更好的代碼
  • 下載並解壓縮這個文件到你的電腦的文件系統上.
  • 按照 README.txt 文件中的說明來自定義這個模版.
  • 調用反向工程嚮導, 在第 1 頁選擇啓用 Use custom templates 選項, 然後將 Template directory 指向到包含模版樹的文件夾e.
5.6 使用自定義反向工程策略
  1. 向你的項目中添加 MyEclipse Persistence Tools 類庫.
    • 右鍵點擊你的項目然後選擇 Properties.
    • Java Build Path 頁面, 在 Libraries 面板下選擇 Add Library....
    • 選擇 MyEclipse Libraries ,接着選中 MyEclipse Persistence Tools.
    • 點擊 Finish.

    圖 16.  添加 MyEclipse Persistence Tools 類庫
  2. 在你的項目中創建一個新類, 讓這個類繼承自 org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy 類.
  3. 定義一個單參數的構造器, 然後覆蓋其中的感興趣的一個或者多個方法, 例如, columnToPropertyName.
    這裏是一個例子, 將在所有生成的屬性前添加一個 "ME_" 前綴.

    MyStrategy.java

    package  com.genuitec.hibernate;
    import  org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
    import  org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
    import  org.hibernate.cfg.reveng.TableIdentifier;
    public class MyStrategy extends DelegatingReverseEngineeringStrategy {
    public MyStrategy(ReverseEngineeringStrategy strategy) {
    super (strategy);
    }
    public String columnToPropertyName(TableIdentifier table, String columnName) {
    return "ME_" + super.columnToPropertyName(table, columnName);
    }

    }

    圖 17. MyStrategy.java 源代碼清單

  4. 在反向工程嚮導的第 2 頁, 選中剛纔所創建的類

    圖 18.  指定反向工程策略
5.7 編輯映射文件

MyEclipse 包含了定製過的 XML 編輯器來專門用於修改 Hibernate 映射文件 (*.hbm.xml). 當雙擊映射文件的時候編輯器將會自動打開. 你也可以通過右鍵點擊文件然後選擇 Open With > MyEclipse Hibernate Mapping Editor.
功能

  • 超鏈接瀏覽到引用到的類和屬性.
  • 類名自動完成提示.
  • 屬性名自動完成提示.
  • 映射文件元素, 屬性和值的內容完成提示.

    圖 19.  Hibernate 映射文件編輯器

返回頁首


6. 使用 HQL 編輯器

MyEclipse 包含了一個 Hibernate 查詢語言編輯器以及幾個視圖, 允許你根據當前的 Hibernate 配置來執行 HQL 查詢語句.
功能

  • 內容自動完成提示.
  • Hibernate Dynamic Query Translator 在敲入 HSQL 查詢語句時查看翻譯後的 SQL 語句.
  • Hibernate Query Results 視圖可以查看多個查詢結果集; 結果的屬性顯示在 Properties 視圖.
  • Query Parameters 視圖可以很方便的執行帶有參數的查詢.
  • 項目選擇器允許你隨時切換不同的 Hibernate 項目中的 Hibernate 配置.

下面的步驟將指導你如何使用 HQL 編輯器
  1. 右鍵點擊 Package Explorer 中的 HibernateDemo 項目.
  2. 在右鍵菜單中的 MyEclipse 項目下, 選擇 Open HQL Editor...
    注意: HQL 編輯器也會在你嘗試查看後綴爲 hql 的文件的時候打開.


    圖 20.  打開 HQL 編輯器

  3. 如果你沒有在 Hibernate 透視圖下工作, 你將會被提示切換到相應的視圖, 同意切換即可.
    注意: 總是可以切換到這個視圖, 通過選擇菜單項 Window > Open Perspective > Other > MyEclipse Hibernate
  4. 當編輯器打開時, 鍵入 "from EchoMessage"
  5. 點擊 Run 圖標或者按下 Ctrl + F9 來執行查詢語句.


    圖 21.  在 HSQL 編輯器中執行查詢

  6. 使用 Query Parameters 視圖來執行帶參數的查詢.


    圖 22.  Query Parameters 視圖

    注意: 如果你在 HSQL 編輯器爲特定的項目初始化後修改了配置, 映射文件或者數據類, 一定要記得點擊嵌入的工具欄上的 Refresh 按鈕來讓編輯器使用最新的配置信息.

返回頁首

7. 測試 HibernateDemo 應用

既然 Hibernate 持久化功能已經整合進了 HibernateDemo 項目, 接下來的步驟就是對它進行測試.  一種測試 Hibernate 持久化功能的方法是創建一個帶 main 方法的 Java 類.  測試類將使用 Hibernate 嚮導所生成的 Java 對象和 HibernateSessionFactory.  請查看圖 18 中所示的 HibernateSessionFactory 類中所生成的兩個重要的方法, 在測試代碼中將會使用這兩個方法.


圖 23. HibernateSessionFactory 方法

顯示了 HibernateSessionFactory 中的兩個重要的靜態方法.

getSession(): 這個方法將會返回一個 Session 變量, 可以用來訪問 Hibernate Session 類.  任何時間你想使用 Hibernate 會話的時候你都可以調用這個方法來獲取緩存過的這個 Hibernate 會話對象.

closeSession(): 如果一個會話已經啓動過, 這個方法就簡單的關閉它.

下面是創建測試類源代碼的步驟列表:

  1. 創建一個新的 Java 類: File > New > Class

  2. 輸入包名

  3. 輸入類名(Name): HibernateReadTest

  4. 如 圖 19 所示完成頁面設置, 然後選擇 Finish

    圖 24. 新建 Java 測試類

  5. 接下來, 打開文件 HibernateReadTest.java , 替換源代碼爲圖 20 中所列的內容. 

    HibernateReadTest.java

    package  com.genuitec.hibernate;
    import  org.hibernate.HibernateException;
    public class  HibernateReadTest {
    public static  void  main(String[] args) {
    // Step 1 - Create the DAO
    EchoMessageDAO dao = new  EchoMessageDAO();
    try  {
    // Step 2 - Use findById to retrieve the message with ID = 1
    EchoMessage echoMessage = dao.findById(new  Long(1));
    System.out.println("Entity retrieval successful, message is: "
    + echoMessage.getMsg());
    catch  (HibernateException e) {
    System.err.println("Entity retrieval failed.");
    e.printStackTrace();
    finally  {
    try  {
    dao.getSession().close();
    catch  (Exception e) {
    // do nothing
    }
    }
    }
    }

    圖 25. HibernateTest.java 源代碼清單

  6. 保存 HibernateReadTest.java

  7. Package Explorer 中選中文件 HibernateReadTest.java

  8. 在頂部菜單欄中選擇 Run 菜單, 接着選擇 Run > Run as > Java Application
    這是, Console 視圖將會打開, 如果測試成功的話你將會看到如下面的 圖 21所示的輸出內容.
    注意: 如果你看到了 log4j 警告, 你可以忽略它們即可.

    圖 26. HibernateReadTest Console 輸出

返回頁首


8. 使用示例 HibernateDemo 項目

  1. 下載 HibernateDemo.zip
  2. 選擇 Import > Existing Projects into Workspace, 選中 Select archive file 選項然後指向下載的 zip 文件. 點擊 Finish 來導入到你的 Eclipse 工作臺.
  3. 需要做以下修改來重新配置這個項目和你的開發環境保持一致.
    • 從你的數據庫複製 JDBC 驅動 JAR 文件到項目中. 通過右鍵點擊文件然後選擇 Build Path > Add to Build Path 來將它添加到項目的構造路徑中.
    • 連接到你的數據庫然後執行 DDL/DDL.sql 文件中的代碼來創建示例數據庫並填充裏面的值.
      在執行之前, 也許需要修改表格的數據庫前綴並使它和你的數據庫的 DDL 規範一致.
    • 修改配置文件 hibernate.cfg.xml , 將裏面的連接設置修改爲你自己的數據庫配置.
      還可能需要修改 EchoMessage.hbm.xml 來修改 class 元素裏面指定的 schema 屬性爲對應的數據庫名稱.
一些其它的文件已經包含在這裏:
log4j.properties 用來控制 log4j 類庫裏面的日誌等級.
ehcache.xml 用來控制 ehcache 類庫.
HibernateWriteTest.java 是一個簡單的演示類來展示 DAO 是如何寫入數據到數據庫的.

返回頁首


9. 總結

使用 MyEclipse 進行 Hibernate 開發的教程到此結束. 我們還有更多的快速入門文檔, 包括如何使用 Database Explorer, Struts, JSF, Web Projects, 修改, 應用服務器配置, EJB 開發, 以及企業應用項目. 更多信息請訪問 MyEclipse Quickstart library

返回頁首


10. 用戶反饋

如果你對本文有評論或者建議, 請提交到 MyEclipse Documentation Forum

返回頁首


11.資源

返回頁首

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章