程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 利用MiddleGen-hibernate-r5生成hbm文件及POJO文件,

利用MiddleGen-hibernate-r5生成hbm文件及POJO文件,

編輯:JAVA綜合教程

利用MiddleGen-hibernate-r5生成hbm文件及POJO文件,


1       先決條件

1.1    已安裝JDK(版本1.5以上)並配置環境變量

         到http://java.sun.com上下載JDK,配置環境變量(我的電腦右鍵->屬性->高級->環境變量)

JAVA_HOME:JDK安裝目錄

CLASS_PATH:JDK安裝目錄\lib

PATH:JDK安裝目錄\bin

1.2    已安裝ant並配置環境變量

         點擊http://apache.mirror.phpchina.com/ant/binaries/apache-ant-1.7.1-bin.zip 下載ant並解壓,設置環境變量(我的電腦右鍵->屬性->高級->環境變量)

ANT_HOME:ant解壓目錄

path="ant解壓目錄\bin"

之後再“運行”輸入cmd---ant 提示如下 說明ant安裝正確

 

1.3    MiddleGen下載

    點擊http://jaist.dl.sourceforge.net/sourceforge/hibernate/Middlegen-Hibernate-r5.zip下載Middlegen-Hibernate-r5並解壓

 

2       所需jar包

         生成hbm文件所需jar包

由於本例使用的是Mysql數據庫,所以需要:

              mysql-connector-java-5.1.11-bin.jar

         生成POJO時所需jar包

hibernate3.jar

dom4j-1.6.1.jar

可以點擊

http://nchc.dl.sourceforge.net/sourceforge/hibernate/hibernate-distribution-3.3.1.GA-dist.zip 下載,dom4j-1.6.1.jar位於 hibernate-distribution-3.3.1.GA\lib\required下(也可以通過http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip 下載)

 

hibernate-tools.jar

freemarker.jar

可以點擊

http://jaist.dl.sourceforge.net/sourceforge/jboss/HibernateTools-3.2.4.Beta1-R200810311334.zip 下載,解壓後jar包位於

plugins\org.hibernate.eclipse_3.2.4.Beta1-R200810311334\lib\tools

 

slf4j-api-1.5.2.jar

slf4j-jdk14-1.5.2.jar

slf4j-log4j12-1.5.2.jar

可以點擊http://www.slf4j.org/dist/slf4j-1.5.2.zip 下載

3       生成過程

將下載的MiddleGen-Hibernate-r5解壓到任一目錄,並在build目 錄下新建一個文件夾mysrc

3.1    生成hbm文件

原文內容

   <property name="database.script.file"           value="${src.dir}/sql/${name}-mysql.sql"/>

   <property name="database.driver.file"           value="${lib.dir}/mysql-connector-java-3.0.16-ga-bin.jar"/>

   <property name="database.driver.classpath"      value="${database.driver.file}"/>

   <property name="database.driver"                value="org.gjt.mm.mysql.Driver"/>

   <property name="database.url"                   value="jdbc:mysql://localhost/employee"/>

   <property name="database.userid"                value="root"/>

   <property name="database.password"              value="root"/>

   <property name="database.schema"                value=""/>

   <property name="database.catalog"               value=""/>

   <property name="jboss.datasource.mapping"       value="mySQL"/>

修改

<property name="database.driver.file"        value="${lib.dir}/mysql-connector-java-3.0.16-ga-bin.jar"/>

將紅字部分改為你所導入的mysql驅動包名(驅動應放在放再D:\Middlegen-Hibernate-r5\lib下)

 

<property name="database.url"                   value="jdbc:mysql://localhost/employee"/>

設置mysql的url

<property name="database.userid"                value="root"/>

<property name="database.password"              value="root"/>

設置用戶名、密碼 

 

 

 MiddleGen界面說明
進入Middlegen的GUI界面後,可以看到,數據庫中的表結構已經導入到MiddleGen的操作界面中,選定數據庫表視圖中的表元素,我們即可調整各個數據庫表的屬性。

1.Domain Class Name   對應POJO的類名。

2.Key Generator

  主鍵生成器

  可選項說明:

   ①assigned.主鍵由外部程序生成,無需Hibernate參與。

   ②hilo 通過hi/lo算法實現的主鍵生成機制,需要額外的數據庫表保存主鍵生成歷史狀態。

   ③seqhilo  與hilo類似,通過hi/lo算法實現的主鍵生成機制,只是主鍵歷史狀態保存在Sequence中,適用於支持Sequence的數據庫,如 Oracle。

   ④increment  主鍵按數值順序遞增。此方式的實現機制為在當前應用實例中維持一個變量,以保存著當前的最大值,之後每次需要生成主鍵的時候將此值加1作為主鍵。這種方式可能產生的問題是,如果當前有多個實例訪問同一個數據庫,那麼由於各個實例各自維護主鍵狀態,不同實例可能產生相同主鍵,從而造成主鍵重復異常。因此,同一數據庫有多個實例訪問,此方式必須避免使用。

   ⑤identity  采用數據庫提供的主鍵生成機制。如 DB2,sql server,Mysql中的主鍵生成機制。

   ⑥sequence 采用數據庫提供的sequence機制生成主鍵。如oracle中的sequence機制。

   ⑦native  由Hibernate根據底層數據庫自行判斷采用identity,hilo,sequence其中一種作為主鍵生成方式。 

   ⑧uuid.hex 由Hibernate基於128位唯一值產生算法生成16進制數值(編碼後以長度32的字符串表示)作為主鍵。

   ⑨uuid.string 與uuid.hex類似,只是生成的主鍵未進行編碼(長度16).在某些數據庫中可能出現問題(如PostgreSQL)。

   ⑩foreign 使用外部表的字段作為主鍵。

一般而言,使用uuid.hex方式生成主鍵將提供最好的性能和數據庫平台適應性。

另外,由於常用的數據庫,如oracle,DB2,SqlServer,MySql等,都提供了易用的主鍵生成機制(auto-Increase字段或者sequence)。我們可以在數據庫提供的主鍵生成機制上,采用generator-class=native的主鍵生成方式。

3.key-generator後面的可輸入部分。  如果需要采用定制的主鍵產生算法,則在此處配置主鍵生成器,主鍵生成器必須實現net.sf.hibernate.id.IdentifierGenerator接口。

4.Schema Name  數據庫Schema Name 

5.Persister 自定義持久化實現類類名。如果系統中還需要Hibernate之外的持久層實現機制,如通過存儲過程得到目標數據集,甚至從LDAP中獲取數據來填充我們的POJO。

6.Enable proxies 是否使用代理(用於延遲加載[Lazt Loading])

7.Dynamic Update  如果選定,則生成UPDATE SQL時不包含未發生變動的字段屬性,這樣可以在一定程度上提升sql執行效能。

8.Mutable  類是否可變,默認為選定(可變)。如果不希望應用程序對此類對應的數據進行修改(如對於數據庫視圖),則可取消其選定狀態,之後對此類的delete和update都將失效。

9.Lifestyle interface  是否實現lifestyle接口。lifestyle接口提供了數據固化過程中的控制機制,通過實現該接口,我們可以在數據庫操 中加入回調機制,如在數據庫操作之前,之後觸發指定操作。

10.Validatable interface  是否實現Validatable 接口。通過實現Validatable 接口,我們可以在數據被固化到數據庫表之前對其合法性進行驗證。要注意的是,通過實現lifestyle接口,同樣可以在數據庫操作之前進行合法性驗證。不同的是,Validatable 接口中定義的方法可能會被多次調用,因此設計中應避免在Validatable 接口的validate方法的實現中加入業務邏輯的驗證。

 

3.2    生成POJO

將以下jar包復制到MiddleGen-Hibernate-r5文件夾lib目錄

hibernate3.jar, hibernate-tools.jar, dom4j-1.6.1.jar, slf4j-log4j12-1.5.2.jar, slf4j-api-1.5.2.jar, slf4j-jdk14-1.5.2.jar, freemarker.jar

再次打開build.xml文件

修改第212行

<target name="hbm2java" description="Generate .java from .hbm files.">

      <taskdef

         name="hbm2java"

         classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"

         classpathref="lib.class.path"

      />

   <hbm2java output="${build.gen-src.dir}">

                     <fileset dir="${build.gen-src.dir}">

                            <include name="**/*.hbm.xml"/>

                     </fileset>

              </hbm2java>

   </target>

<target name="hbm2java" description="Generate .java from .hbm files.">

      <taskdef

         name="hbm2java"

         classname="org.hibernate.tool.ant.HibernateToolTask"

         classpathref="lib.class.path"

      />

      <hbm2java destdir="${build.gen-src.dir}">

              <configuration>

                     <fileset dir="${build.gen-src.dir}">

                            <include name="**/*.hbm.xml"/>

                     </fileset>

                     </configuration>

                     <hbm2java jdk5="true"/>

              </hbm2java>

   </target>

由於Middlegen生成的hbm文件是裡面的引用是hibernate2的DTD,因此修改生成的hbm.xml裡面hibernate2的DTD 由

<!DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

變為

<!DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

(也就是將2變為3,這樣就不會出現“Don’t use old DTDs,read the Hibernate3.x Migration Guide!”錯誤)

運行ant hbm2java,生成的POJO文件位於build\mysrc\model文件夾下。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved