Eclipse快速上手Hibernate–3. 利用XDoclet開發

來源:互聯網
上載者:User
    這篇文章是上兩篇文章《Eclipse快速上手Hibernate--1. 入門執行個體》和《Eclipse快速上手Hibernate--2. 利用Hbm對應檔開發》的延續,主要說的是如何利用XDocletHbm對應檔產生Hbm對應檔及資料表。可以參考XDoclet文檔中關於Hibernate的部分和夏昕編寫的《Hibernate開發指南》。同樣,這篇文章沒有過多談理論,只是給出了一個完整的執行個體加以說明。相關配置請參考上兩篇文章。   1. 建立項目 ·  建立一個Java項目:HibernateBegin_3,注意選中“建立單獨的源檔案夾和輸出檔案夾”,同時添加“使用者庫”:hibernate。   2.  檔案User.java ·  建立一個類,包名:javamxj.hibernate,類名:User。然後在產生的程式碼中添加變數,再利用“產生 Getter 和 Setter”,具體方式同《Eclipse快速上手Hibernate--1. 入門執行個體 》文章中的編輯User.java的方式一樣。   ·  添加HibernateDoclet標記,關於如何利用JBoss-IDE添加XDoclet標記的技巧參考《Eclipse快速上手EJB -- 1. Lomboz + JBoss-IDE 配置2 》文中的關於JBoss-IDE的部分,這是添加HibernateDoclet後的代碼: 

User.javaww w.china it power.co43ApGSN

/* * 採用HibernateDoclet開發一個簡單的Hibernate執行個體 * 建立日期 2005-3-31 * @author javamxj(分享java快樂) * @link  Blog: htpp://javamxj.mblogger.cn   *              htpp://blog.csdn.net/javamxj/  */package javamxj.hibernate;/** * @hibernate.class table = "UserTable3" */public class User {private int id;private String username;private String password;        /** * @hibernate.id *   column = "ID" *   generator-class = "hilo"  */public int getId() {return id;}public void setId(int id) {this.id = id;}/** * @hibernate.property  *    length = "24" *    not-null = "true" */public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}/** * @hibernate.property  *    column = "使用者名稱" *    length = "24" *    not-null = "true" */public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}}

 

·  添加類標記“ @hibernate.class table ="UserTable3" ”用來產生資料庫的表UserTable3。·  “ @hibernate.id"用來產生主鍵,注意這裡採用是hilo(高低位)產生器,需要額外的資料庫表儲存主鍵產生曆史狀態。·  “ @hibernate.property”描述POJO中屬性與資料庫表欄位之間的映射關係。   ●  更新xdoclet-hibernate-module 
·  將XDoclet1.2.2中的xdoclet-hibernate-module-1.2.2.jar複製到JBossIDE-1.4.1-e30/eclipse/plugins/org.jboss.ide.eclipse.xdoclet.core_1.4.1目錄中,並且刪除其目錄下的xdoclet-hibernate-module-1.2.1.jar檔案,然後在eclipse介面中,視窗 ->喜好設定 ->JBoss-IDE ->XDoclet ->Code Assist:點擊右側的“Refresh XDoclet Data”欄,即可完成更新。如果要替換其它的模組,步驟與此類似。   3. 項目結構 · 將上篇文章中的“build.xml”複製到項目根目錄下,設定檔“hibernate.cfg.xml”複製到src目錄下,這時的項目結構   4. 運行任務 ·  雙擊“generate-hbm”任務,然後按一下“F5”功能鍵重新整理一下包“javamxj.hibernate”,應該可以看到這個包下的“User.hbm.xml”。檔案如下:

User.hbm.xmlww w.china it power.co43ApGSN

<?xml version="1.0" encoding="GBK"?>

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping
>
    <class
        name="javamxj.hibernate.User"
        table="UserTable3"
        dynamic-update="false"
        dynamic-insert="false"
        select-before-update="false"
        optimistic-lock="version"
    >

        <id
            name="id"
            column="ID"
            type="int"
        >
            <generator class="hilo">
              <!-- 
                  To add non XDoclet generator parameters, create a file named
                  hibernate-generator-params-User.xml
                  containing the additional parameters and place it in your merge dir.
              -->
            </generator>
        </id>

        <property
            name="password"
            type="java.lang.String"
            update="true"
            insert="true"
            access="property"
            column="password"
            length="24"
            not-null="true"
        />

        <property
            name="username"
            type="java.lang.String"
            update="true"
            insert="true"
            access="property"
            column="使用者名稱"
            length="24"
            not-null="true"
        />

        <!--
            To add non XDoclet property mappings, create a file named
                hibernate-properties-User.xml
            containing the additional properties and place it in your merge dir.
        -->

    </class>

</hibernate-mapping>  

●  產生資料表·  啟動MySql,應該確定含有HibernateTest資料庫,不過這次不需要建立資料表了。·  雙擊“schemaexport”任務,然後重新整理項目根目錄,會發現出產生的“schema-export.sql”檔案。 
schema-export.sql
drop table if exists UserTable3
drop table if exists hibernate_unique_key
create table UserTable3 (
   ID integer not null,
   password varchar(24) not null,
   使用者名稱 varchar(24) not null,
   primary key (ID)
)
create table hibernate_unique_key (
    next_hi integer
)
insert into hibernate_unique_key values ( 0 )
 ·  切換到資料庫中,會發現已經自動產生了資料表usertable3和hibernate_unique_key:   

5. 測試程式 好了,將上篇文章中的test.java檔案複製到包“javamxj.hibernate”下,然後右擊運行這個檔案,可以看到資料表中產生的資料(圖中的資料是連續運行4次後產生的)。    6. Log4j     Log4j是一個開放源碼的項目。它允許開發員以任意的間隔來控制日誌的輸出。它通過設在外部的設定檔而達到運行時靈活的設定。    運行Log4j的庫檔案都已經放到先前建立的hibernate庫檔案夾中了,你只要找到下載的hibernate 2.1.8壓縮檔中的etc目錄,複製其中的log4j.properties檔案到項目中的src目錄即可。 運行test.java,可以看到控制台的輸出語句似乎和先前沒有用Log4j沒有什麼區別。 現在開啟log4j.properties,找到“log4j.logger.net.sf.hibernate=info”語句,將其改成“log4j.logger.net.sf.hibernate= warn”,再次運行test.java,可以看到控制台的輸出語句只有兩條了: 21:03:55,687  WARN Configurator:125 - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/D:/java/Hibernate/lib/ehcache-0.9.jar!/ehcache-failsafe.xml
Hibernate: insert into UserTable3 (password, 使用者名稱, ID) values (?, ?, ?)
警告資訊是指緩衝設定檔沒有找到,以後用到時再談談這一點。 好了,hibernate結合Log4j的使用就是這麼簡單。關於Log4j的使用,比較簡單,網上的資料也很多,自己可以google一下。    小結:   Hibernate的開發相當靈活,可以採用多種方式開發。 ·  只有Hbm對應檔:對應檔---hbm2java----java---SchemaExport----資料表·  只有Java:    java---XDoclet---Hbm----SchemaExport----資料表·  如果只有資料表呢?可以採用Middlegen:                   資料表---Middlegen---Hbm----hbm2java----java      關於利用Middlegen開發Hibernate的方法,可以參考夏昕編寫的《Hibernate開發指南》。   ·  至於有關Hibernate的Eclipse外掛程式,也有很多,可以看看《Working with Hibernate in Eclipse》。

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.