日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用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文件

  • 將Middlegen-Hibernate-r5.zip解壓至你所希望的目錄,本例放再d根目錄下
  • 進入D:\Middlegen-Hibernate-r5\config\database找到你想使用的數據庫配置文件(.xml)本例使用mysql.xml
  • 打開mysql.xml對其配置如下:
  • 原文內容

    ?? <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根目錄下的build.xml
  • ?

    ?

    ?

    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文件夾下。

    轉載于:https://www.cnblogs.com/xrab/p/5367417.html

    總結

    以上是生活随笔為你收集整理的利用MiddleGen-hibernate-r5生成hbm文件及POJO文件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。