Eclipse快速上手Hibernate--2. 利用Hbm對應檔開發

來源:互聯網
上載者:User
   這篇文章是上篇文章《Eclipse快速上手Hibernate--1. 入門執行個體》的延續,主要說的是如何利用Hbm對應檔產生普通的Java對象及資料表。可以參考Hibernate內建的文檔《HIBERNATE - 符合Java習慣的關聯式資料庫持久化》的第15章--《工具箱指南》一節。同樣,這篇文章沒有過多談理論,只是給出了一個完整的執行個體加以說明。相關配置請參考上篇文章。  1. 建立項目 ·  建立一個Java項目:HibernateBegin_2,注意選中“建立單獨的源檔案夾和輸出檔案夾”,同時添加“使用者庫”:hibernate。 2.  對應檔User.hbm.xml ·  建立一個包,包名:javamxj.hibernate,然後在此包下建立一個檔案,檔案名稱:User.hbm.xml。User.hbm.xml
<?xml version="1.0" encoding="GBK"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping><class name="javamxj.hibernate.User" table="UserTable2"><meta attribute="class-description"> 運行 Hbm2Java 任務, 利用 hbm.xml檔案產生Java類檔案 @author javamxj(分享java快樂) @link Blog: htpp://javamxj.mblogger.cn htpp://blog.csdn.net/javamxj/ </meta><id name="id" type="string" unsaved-value="null" length="32" column="ID"><generator class="uuid.hex"/></id><property name="username" type="string" not-null="true" length="24"><meta attribute="field-description">@param 使用者名稱</meta></property><property name="password" type="string" not-null="true" ><column name="密碼" length="24" not-null="true"></column></property></class></hibernate-mapping>  
 ●  與上篇文章中的User.hbm.xml檔案比較,可以發現標籤上增加了許多額外的設定。·  這裡<meta>標籤中的內容將插入到類的javadoc說明去。 ·  <id>標籤使用 uuid.hex 來定義主鍵的產生演算法,UUID演算法使用IP地址、JVM的啟動時間、系統時間和一個計數值來產生主鍵。·  <property>標籤中的<column>用於產生資料表中的列。  3. 構建檔案Build.xml ·  將上篇文章中的“hibernate.cfg.xml”設定檔複製到src目錄下。 ·  在項目根目錄下建立一個build.xml,這個檔案含有四個任務,這裡會用到“generate-code”、“schemaexport”兩個任務,至於用法可以看注釋。要注意環境變數的設定要符合自己的實際配置,比如庫檔案目錄的設定是"D:/java/Hibernate/lib",是沿用上篇文章中的設定。
build.xml

<?xml version="1.0" encoding="GBK"?><project name="利用工具開發Hibernate" default="help" basedir="."><!-- ****** 環境設定,可以根據自己的實際配置自行更改 ***** --><!-- 源檔案目錄, 可以通過 項目->屬性->Java構建路徑 更改 --><property name="src.dir" value="./src" /><!-- 輸出的class檔案目錄,可以通過 項目->屬性->Java構建路徑 更改 --><property name="class.dir" value="./bin" /><!-- 庫檔案目錄 --><property name="lib.dir" value="D:/java/Hibernate/lib" /><!-- 定義類路徑 --><path id="project.class.path"><fileset dir="${lib.dir}"><include name="*.jar"/></fileset><pathelement location="${class.dir}" /></path><!-- ************************************************************** --><!-- 使用說明 --><!-- ************************************************************** --><target name="help"><echo message="利用工具開發Hibernate" /><echo message="-----------------------------------" /><echo message="" /><echo message="提供以下任務:" /><echo message="" /><echo message="generate-code --> 運行Hbm2Java,利用 hbm.xml 檔案產生Java類檔案" /><echo message="generate-hbm --> 運行HibernateDoclet,產生 Hibernate 類的對應檔" /><echo message="schemaexport --> 運行SchemaExport,利用 hbm.xml 檔案產生資料表" /><echo message="" /></target><!-- ************************************************************** --><!-- Hbm2Java 任務 --><!-- ************************************************************** --><target name="generate-code" ><echo message="運行 Hbm2Java 任務, 利用 hbm.xml 檔案產生Java類檔案"/><taskdef name="hbm2java" classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask" classpathref="project.class.path"></taskdef><hbm2java output="${src.dir}"><fileset dir="${src.dir}"><include name="**/*.hbm.xml"/></fileset></hbm2java></target><!-- ************************************************************** --><!-- HibernateDoclet 任務 --><!-- ************************************************************** --><target name="generate-hbm" ><echo message="運行HibernateDoclet,產生 Hibernate 類的對應檔"/><taskdef name="hibernatedoclet" classname="xdoclet.modules.hibernate.HibernateDocletTask" classpathref="project.class.path"></taskdef><hibernatedoclet destdir="${src.dir}" excludedtags="@version,@author,@todo" force="true" encoding="GBK" verbose="true"><fileset dir="${src.dir}"><include name="**/*.java"/></fileset><hibernate version="2.0" xmlencoding="GBK" /></hibernatedoclet></target><!-- ************************************************************** --><!-- SchemaExport 任務 --><!-- ************************************************************** --><target name="schemaexport"><echo message="運行SchemaExport,利用 hbm.xml 檔案產生資料表"/><taskdef name="schemaexport" classname="net.sf.hibernate.tool.hbm2ddl.SchemaExportTask" classpathref="project.class.path"></taskdef><schemaexport config="${src.dir}/hibernate.cfg.xml" quiet="no" text="no" drop="no" output="schema-export.sql"></schemaexport></target></project>
  ·  最後的目錄結構如下:   4. 運行任務 ·  右擊“build.xml” ->“運行” ->這裡應該有“Ant 構建”和“Ant 構建...”兩個菜單,其中“Ant 構建”直接運行預設任務,這裡是指“help”任務;如果要運行其它的任務,可以通過“Ant 構建...”菜單選擇。·  這裡還有一種更好的方法,Eclipse主菜單上點擊“視窗” ->“顯示視圖” ->點擊“Ant”,這樣就調出了Ant視圖,在這個視圖視窗的空白處,右擊,在快顯功能表中選擇“添加構建檔案”,然後將HibernateBegin_2項目根目錄下的“build.xml”檔案載入即可。效果如圖:這樣,想運行某個任務,直接雙擊Ant視圖中的任務即可。 ● 產生User.java·  雙擊“generate-code”任務,在控制台應該可以看到如下輸出: ·  如果在src目錄下沒有看到“User.java”這個檔案,那麼選中src目錄,然後按一下“F5”功能鍵重新整理一下src目錄,應該可以在包“javamxj.hibernate”下看到“User.java”。這個檔案就是“Hbm2Java”產生器根據hbm檔案產生的,如下:
User.java

package javamxj.hibernate;import java.io.Serializable;import org.apache.commons.lang.builder.ToStringBuilder;/** * * 運行 Hbm2Java 任務, 利用 hbm.xml檔案產生Java類檔案 * @author javamxj(分享java快樂) * @link Blog: htpp://javamxj.mblogger.cn * htpp://blog.csdn.net/javamxj/ * */public class User implements Serializable { /** identifier field */ private String id; /** persistent field */ private String username; /** persistent field */ private String password; /** full constructor */ public User(String username, String password) { this.username = username; this.password = password; } /** default constructor */ public User() { } public String getId() { return this.id; } public void setId(String id) { this.id = id; } /** * @param 使用者名稱 */ public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } public String toString() { return new ToStringBuilder(this) .append("id", getId()) .toString(); }}
可以對照“User.hbm.xml”檔案,看看都是哪些屬性轉化成什麼代碼。 ●  產生資料表·  啟動MySql,應該確定含有HibernateTest資料庫,不過這次不需要建立資料表了。·  雙擊“schemaexport”任務,控制台輸出如下,注意自動產生的SQL語句: ·  同時,在項目根目錄下,也會產生一個“schema-export.sql”檔案(如果沒有,按F5鍵重新整理目錄),這個檔案是在“build.xml”中設定的:schema-export.sqldrop table if exists UserTable2create table UserTable2 (   ID varchar(32) not null,   ddd varchar(24) not null,   密碼 varchar(24) not null,   primary key (ID))  ·  切換到資料庫中,會發現已經自動產生了資料表usertable2:  5. 測試程式 好了,將上篇文章中的test.java檔案複製到包“javamxj.hibernate”下,然後右擊運行這個檔案,可以看到資料表中產生的資料。   小結     好了,再來看看整個項目的結構,其中“User.java”和“schema-export.sql”兩個檔案都是自動產生的,要注意的一點是:產生“schema-export.sql”檔案需要調用“User.java”檔案,所以“generate-code”任務要在“schemaexport”任務前執行。    最好使用XMLBuddy外掛程式來編輯xml檔案,可以參考:        關於如何利用Hbm對應檔產生普通的Java對象及資料表,還需要多看看參考文檔,也要多加練習,在實踐中掌握,在實踐中前進。   下篇文章會談談利用XDoclet開發Hibernate。

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。