首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Ant + XDoclet 自動生成 Hibernate 映射文件:從註解到 hbm.xml 全流程

     編輯:Java 相關知識

實體類字段眾多且涉及繼承關係時,手寫 .hbm.xml 易錯且難維護。本文演示如何利用 Ant 腳本調用 XDoclet,讀取 Java 文件中的 Javadoc 註解(@hibernate.*),自動生成映射文件與主鍵策略配置。

前置準備

  • 下載 XDoclet(含 xdoclet.jar、xdoclet-hibernate-module.jar 等)至 ${xdoclet.lib.home}。
  • 實體類添加標準 XDoclet 註解,如 @hibernate.class table="Users"、@hibernate.id generator-class="assigned"、@hibernate.property、@hibernate.set 等。

實體類註解示例

/** @hibernate.class table="Users" */
public class User {
    /** @hibernate.id generator-class="assigned" column="LogonID" */
    public String getUserID() { ... }

    /** @hibernate.property column="Name" type="string" */
    public String getUserName() { ... }

    /** @hibernate.set role="contacts" table="Contacts" cascade="all"
     *  @hibernate.collection-key column="User_ID"
     *  @hibernate.collection-one-to-many class="dbdemo.Contact" */
    public Set getContacts() { ... }
}

build.xml 關鍵 Target

<property name="xdoclet.lib.home" value="c:/java_api/xdoclet-1.2b3/lib"/>

<target name="hibernate" depends="prepare">
  <taskdef name="hibernatedoclet" classname="xdoclet.modules.hibernate.HibernateDocletTask">
    <classpath><fileset dir="${xdoclet.lib.home}"><include name="*.jar"/></fileset></classpath>
  </taskdef>

  <hibernatedoclet destdir="." excludedtags="@version,@author,@todo" force="true" verbose="true" mergedir="${dist}">
    <fileset dir="."><include name="**/dbdemo/*.java"/></fileset>
    <hibernate version="2.0"/>
  </hibernatedoclet>
</target>

執行步驟

  1. Eclipse → Window → Show View → Ant。
  2. 右鍵 Add Buildfiles 選擇 build.xml。
  3. 雙擊運行 hibernate target,生成的 *.hbm.xml 將輸出至源碼同目錄或 merdir 指定目錄。

遷移提示:XDoclet → Annotation + Hibernate Tools

XDoclet 已停止維護,現代項目建議:

  • 實體類直接使用 JPA/Hibernate 註解(@Entity、@Id、@OneToMany 等)。
  • 使用 hibernate-tools (Ant/Maven/Gradle 插件) 或 IDE 插件直接從註解生成 hbm.xml 或導出 DDL。
  • 若維護舊專案,本文方案仍可作為過渡期自動化手段。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved