使用XDoclet生成hbm.xml

原创 2006年06月09日 19:18:00

 

使用XDoclet生成hbm.xml- -

                              

Google一下网上用XDoclet生成Hibernate Mapping和建表的文章很多,我以前都是先把表建好,然后手工写Mapping文件,这样很费时间,用XDoclet后在建模过程中在POJO类中加入XDoclet标签,这样节省了很多时间。
用XDoclet生成hbm.xml就是在.java文件里写入一些元数据,XDoclet会从这些数据以及类本身得到足够的信息来生成目标文件。当然,除了用于hibernate,XDoclet还可以用于web、ejb等等很多用途。
  XDoclet要从sourceforge上下载,包含了很多jar包、文档和例子,我觉得文档做得还是不错的,查起来比较方便。要使用XDoclet,一般要通过ant来完成,也就是在ant脚本里加入XDoclet的内容。
  由于eclipse已经包含了ant支持,因此我没有专门去下载一个ant回来,而是直接使用eclipse带的,版本是1.5.3。
  建立ANT的Build文件,输入代码如下:
<project name="Hibernate Example" default="about" basedir="../../">
 <!-- The location where your xdoclet jar files reside -->
 <!--xdoclet-1.2b3-dev built from CVS"/-->
 <property name="xdoclet.lib.home" value="c:/lib/xdoclet-1.2.2/lib"/>
 <property name="properties.dir"   value="${basedir}/ssh/WEB-INF/classes/" />
 <property name="hibernate.lib.home" value="C:/lib/hibernate-2.1.7/lib"/>
 <property name="db2.lib.home" value="d:/"/>
 <property name="pojo.dir" value="${basedir}" />
 
 <target name="clean" depends="init" description="removes all directories related to this build">
  <delete dir="${dist}"/>
 </target>
 
 <target name="init" description="Initializes properties that are used by other targets.">
  <property name="dist" value="dist"/>
 </target>
 
 <target name="prepare" depends="init,clean" description="creates dist directory">
  <echo message="Creating required directories..."/>
  <mkdir dir="${dist}"/>
 </target>
 
 <target name="hibernate" depends="prepare"
        description="Generates Hibernate class descriptor files.">               
  <taskdef name="hibernatedoclet"
      classname="xdoclet.modules.hibernate.HibernateDocletTask">     
      <classpath>
   <fileset dir="${xdoclet.lib.home}">
       <include name="*.jar"/>
   </fileset>
      </classpath>     
  </taskdef>

  <!-- Execute the hibernatedoclet task -->
  <hibernatedoclet
   destdir="${basedir}"
   excludedtags="@version,@author,@todo"
   force="true"
   verbose="true">
  
   <fileset dir="${basedir}">
       <include name="**/ssh/pojo/*.java"/>
   </fileset>

   <hibernate version="2.0"/>

  </hibernatedoclet>     
 </target>
 
<!-- ================================================================== -->
<!-- Export Database Schema from mapping files                          -->
<!-- ================================================================== -->

 <target name="db-schema">
      <path id="hibernate.mapping.files" >
            <fileset dir="${basedir}">
                 <include name="**/ssh/pojo/*.hbm.xml" />
             </fileset>
      </path>
     <pathconvert refid="hibernate.mapping.files" property="hibernate.mappings" pathsep=" "/>
     <java classname="net.sf.hibernate.tool.hbm2ddl.SchemaExport" fork="true">
         <!-- mapping file -->
         <arg line="${hibernate.mappings} --text --format --output=example_schema.ddl --delimiter=;"/>
         <classpath>
             <pathelement location="${properties.dir}"/>
             <fileset dir="${hibernate.lib.home}">
                 <include name="*.jar" />
             </fileset>
            
            <fileset dir="${db2.lib.home}">
                 <include name="**/*.jar" />
                 <include name="**/*.zip" />
             </fileset>
            
             <!-- build output path -->
             <pathelement location="."/>
         </classpath>
    </java>
 </target>
 
 <target name="about" description="about this build file" depends="init">
  <echo message="  Use this format for the arguments:"/>
  <echo message="      ant hibernate"/>
  <echo message="      ant db-schema"/>
  <echo message=""/>  
 </target>
</project>

很简单,但是最容易出问题的地方就路径关系没有理顺好。注意<project name="Hibernate Example" default="about" basedir="../../"> 中的basedir,之后所有的路径都以它为基础。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

谷哥的小弟学后台(41)——MyBatis的动态SQL

MyBatis的动态SQL
  • lfdfhl
  • lfdfhl
  • 2017-03-18 22:33
  • 1125

android自适应draw9patch不失真背景

做人要大度,海纳百川,做事要圆滑,左右逢源,这让我想到了编程也是如此,代码要扩展,界面也要考虑自适应。这篇文章是android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用。1.背...

Spring框架整体巩固学习 第一部分

spring aop DI IOC 框架

基于原生JavaScript封装对象模板

onload = function(){var p1 = new Person('zzh',12); p1.sayWord(); console.log(p1.drink);Person.test2(...

Mybatis框架研究学习

Mybatis框架 MyBatis is a first class persistence framework with support for customSQL, stored procedur...

程序员编程艺术第三十九~四十章:最近公共祖先LCA、打印螺旋矩阵

第三十九~第四十章:最低公共祖先LCA问题、螺旋矩阵前言整个编程艺术系列写到了本第三十九和第四十章,系列越写到后,对题材的选取越严格,即不是任何一个编程问题都可以收录到本系列中。 再者,之前已...

从头到尾彻底理解KMP(2014年8月22日版)

从头到尾彻底理解KMP 作者:July 时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。后收录于新书《编程之法:面试和算法心得》第4....

字符串基本操作以及内存函数

/* ============================================================================ Name : Test...
  • lfdfhl
  • lfdfhl
  • 2015-03-06 14:55
  • 1180

CentOS7基本命令总结

CentOS7 操作命令
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)