Hibernate Reverse Engineering 嚮導

Hibernate Reverse Engineering 嚮導

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 頁
第 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 類型.

# 再第 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 使用模版調整生成更好的代碼
    * e.doc/html/quickstarts/hibernate/myeclipse_templates_5.5GA.zip">這個文件到你的電腦的文件系統上.
    * 按照 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 映射文件編輯器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章