利用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文件夾下。
轉載于:https://www.cnblogs.com/xrab/p/5367417.html
總結
以上是生活随笔為你收集整理的利用MiddleGen-hibernate-r5生成hbm文件及POJO文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Web项目替换jar包中的文件的方法
- 下一篇: hdu 6086 -- Rikka w