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