Hibernate映射文件深入剖析
Hibernate映射文件還是比較常用的,于是我研究了一下Hibernate映射文件,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。
實(shí)際上,hbm2java被設(shè)計(jì)成用來(lái)把Hibernate映射文件轉(zhuǎn)化成一組相應(yīng)的Java類。如果你想在實(shí)際的應(yīng)用程序中使用這種方法,很顯然,對(duì)于所有的Hibernate映射文件一次性生成類會(huì)更為方便。***的方法是把類生成結(jié)合進(jìn)你的自動(dòng)化構(gòu)建過(guò)程中。結(jié)合進(jìn)Ant構(gòu)建過(guò)程中使用Ant調(diào)用hbm2java是相當(dāng)直接的。首先,你需要申明hbm2java任務(wù)(task)以便Ant可以調(diào)用它:
- classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"
- classpathref="project.class.path"/>
接著,你要用到這個(gè)任務(wù)。例如,通過(guò)寫一個(gè)目標(biāo)(target)將源目錄中的所有*.hbm.xml文件生成源代碼。假設(shè)${src.Hibernate}表示含有Hibernate映射文件的目錄,${src.generated}就是你想放源代碼的地方。這樣Ant任務(wù)看起來(lái)就象是:
- description="Generate Java source code
- from the Hibernate mapping files">
Maven 1定制構(gòu)建過(guò)程
為結(jié)合進(jìn)Maven 1構(gòu)建過(guò)程,你需要修改maven.xml文件。Maven代碼就存放在這個(gè)文件中。腳本(script)主要檢查了Hibernate映射文件自上次類生成后是否已被更改(使用uptodate 標(biāo)記),如果沒(méi)有,就調(diào)用此前所描述的Ant中的hbm2java任務(wù)。這種情況下,我們做了以下的假設(shè):
◆hbm2java.xml配置文件應(yīng)在src/Hibernate目錄中
◆Hibernate映射文件應(yīng)在src/Hibernate目錄中
◆在src/generated/src/java目錄下生成Java類
- targetfile="${maven.src.dir}/generated/hbm.jar">
- value="${hibernateBuild.uptodate}"/>
- classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"
- classpathref="maven.dependency.classpath"/>
- output="${maven.src.dir}/generated/src/java" >
Maven 2定制構(gòu)建過(guò)程
若碰巧你正使用Maven 2,事情就更簡(jiǎn)單一點(diǎn)了。把maven-antrun-plugin插件添加到pom.xml文件中,而不是在maven.xml文件中使用完整的 goals屬性(pre and post goals)。在此插件中的task那部分,你可以象上述那樣直接調(diào)用Ant 任務(wù)。
- maven-antrun-plugin
- generate-sources
- classname="org.hibernate.tool.ant.HibernateToolTask"
- classpathref="maven.dependency.classpath"/>
- run
在Hibernate 3中使用hbm2java
Hbm2java 工具已經(jīng)經(jīng)受了Hibernate 3 的考驗(yàn)。hbm2java任務(wù)與其它相似的任務(wù)一起,被集成進(jìn)了新版Hibernate 工具集中的Hibernatetool任務(wù)(撰寫此文時(shí)仍是alpha版)。Ant任務(wù)需要在類路徑(class path)中查找以下的.jar 文件:
◆Hibernate-tools.jar
◆velocity-1.4.jar
◆velocity-tools-generic-1.4.jar
◆jtidy-r8-21122004.jar
◆Hibernate3.jar
◆JDBC drivers
這樣一來(lái),Ant任務(wù)就要作如下申明:
- classname="org.hibernate.tool.ant.HibernateToolTask"
- classpathref="maven.dependency.classpath"/>
***,你在Hibernatetool 任務(wù)中調(diào)用hbm2java任務(wù),做法如下
- classname="org.hibernate.tool.ant.HibernateToolTask"
- classpathref="maven.dependency.classpath"/>
【編輯推薦】