zoukankan      html  css  js  c++  java
  • [Hibernate]使用XDoclet生成hbm.xml

    Hibernate真是受欢迎,有那么多工具为它服务,XDoclet、MiddleGen、各种插件。。。

    用XDoclet生成hbm.xml就是在.java文件里写入一些元数据,XDoclet会从这些数据以及类本身得到足够的信息来生成目标文件。当然,除了用于hibernate,XDoclet还可以用于web、ejb等等很多用途。

    XDoclet要从sourceforge上下载,包含了很多jar包、文档和例子,我觉得文档做得还是不错的,查起来比较方便。要使用XDoclet,一般要通过ant来完成,也就是在ant脚本里加入XDoclet的内容。

    由于eclipse已经包含了ant支持,因此我没有专门去下载一个ant回来,而是直接使用eclipse带的,版本是1.5.3。

    创建一个名为build.xml的脚本(其实应该换个名,比如gen-hbm.xml,看起来比较明白),内容如下:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <project name="XDoclet Examples" default="hibernate" basedir=".">
        <property name="xdoclet.root.dir" value="c:/xdoclet-1.2.1"/>
        <property name="xdoclet.lib.dir" value="${xdoclet.root.dir}/lib"/>
        <path id="myclasspath">
            <fileset dir="${xdoclet.lib.dir}">
                <include name="*.jar"/>
            </fileset>
        </path>
         <taskdef
            name="hibernatedoclet"
            classname="xdoclet.modules.hibernate.HibernateDocletTask"
            classpathref="myclasspath"
            />
        <target name="hibernate" description="Generate mapping documents">
    
            <echo>+---------------------------------------------------+</echo>
            <echo>|                                                   |</echo>
            <echo>| R U N N I N G   H I B E R N A T E D O C L E T     |</echo>
            <echo>|                                                   |</echo>
            <echo>+---------------------------------------------------+</echo>
    
            <hibernatedoclet
                destdir="./src"
                excludedtags="@version,@author,@todo,@see"
                addedtags="@xdoclet-generated at ${TODAY},@copyright The XDoclet Team,@author XDoclet,@version ${version}"
                force="false"
                verbose="true">
    
                <fileset dir="./src">
                    <include name="org/haree/struts/form/UserForm.java"/>
                </fileset>
    
                <hibernate version="2.0"/>
    
            </hibernatedoclet>
        </target>
    </project>

    我曾经卡住的一个地方就是在taskdef里的classpathref属性。一开始我在eclipse的ant运行参数里设置了XDoclet相关的包,总是提示:

    Can't create a hibernate element under hibernatedoclet. Make sure the jar file containing the corresponding subtask class is on the classpath specified in the <taskdef> that defined {2}.

    后来如上设置了classpathref,即包含了XDoclet使用到的包,并将eclipse的ant里关于XDoclet的包都去掉,竟然就成功了。其实现在也不明白为什么会这样。。。

  • 相关阅读:
    数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1)
    从巡检备份失败排查解决数据库故障
    oracle rac自动生成awr
    解决 umount 时出现的 "Device is busy"
    修改sys密码与nbu备份脚本密码后,nbu备份报密码无效
    Oracle_RAC数据库GI的PSU升级(11.2.0.4.0到11.2.0.4.8)
    oracle补丁升级
    AIX上增加逻辑卷时报错误0516-787 extendlv: Maximum allocation for logical volume
    oracle11g dataguard 完全手册
    数据库节点1存储丢失
  • 原文地址:https://www.cnblogs.com/bjzhanghao/p/28072.html
Copyright © 2011-2022 走看看