使用xdoclet辅助Hibernate开发提高工作效率
做Hibernate应用的开发,肯定会设计到pojo的映射文件的编写,当设计到大量的pojo时,维护映射文件变成了一件相当困难的事情,因为要保持pojo和映射文件的同步,很可能就会出错. 如果采用xdoclet那么就可以很方便的保持它们之间的同步,进一步提高工作效率.
这里举一个简单的使用xdoclet生成映射文件的例子:
首先需要使用的包:
1.xdoclet-1.2.3.jar /xjavadoc.jar /xdoclet-hibernate-module-1.2.3.jar
2.ant相关的包
首先,建立ant配置文件(一旦建立,之后就可以在项目中不用更改了)
 <?xml version="1.0" encoding="ISO-8859-1"?>
<?xml version="1.0" encoding="ISO-8859-1"?>
 <project name="XDoclet Examples" default="compile" basedir=".">
<project name="XDoclet Examples" default="compile" basedir="."> 
     <property file="config.properties"/>
    <property file="config.properties"/>
 <!-- =================================================================== -->
    <!-- =================================================================== --> <!-- Define the class path                                               -->
    <!-- Define the class path                                               --> <!-- =================================================================== -->
    <!-- =================================================================== --> <path id="samples.class.path">
    <path id="samples.class.path"> <fileset dir="lib.dir ">
        <fileset dir="lib.dir "> <include name="*.jar"/>
            <include name="*.jar"/> </fileset>
        </fileset> </path>
    </path>
 <!-- =================================================================== -->
    <!-- =================================================================== --> <!-- Initialise                                                          -->
    <!-- Initialise                                                          --> <!-- =================================================================== -->
    <!-- =================================================================== --> <target name="init">
    <target name="init"> <tstamp>
        <tstamp> <format property="TODAY" pattern="d-MM-yy"/>
            <format property="TODAY" pattern="d-MM-yy"/> </tstamp>
        </tstamp>   <!-这里很关键,一般来说除了classpathref会修改之外,其他不用修改->
       <!-这里很关键,一般来说除了classpathref会修改之外,其他不用修改-> <taskdef
         <taskdef name="hibernatedoclet"
            name="hibernatedoclet" classname="xdoclet.modules.hibernate.HibernateDocletTask"
            classname="xdoclet.modules.hibernate.HibernateDocletTask" classpathref="samples.class.path"
             classpathref="samples.class.path" />
            /> </target>
    </target>
 
   
 <!-- =================================================================== -->
    <!-- =================================================================== --> <!-- Invoke XDoclet's hibernate                                          -->
    <!-- Invoke XDoclet's hibernate                                          --> <!-- =================================================================== -->
    <!-- =================================================================== --> <target name="hibernate" depends="init" description="Generate mapping documents (run jar first)">
    <target name="hibernate" depends="init" description="Generate mapping documents (run jar first)">
 <echo>+---------------------------------------------------+</echo>
        <echo>+---------------------------------------------------+</echo> <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>| 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> <echo>+---------------------------------------------------+</echo>
        <echo>+---------------------------------------------------+</echo> <!-这里也是比较关键的地方->
        <!-这里也是比较关键的地方-> <hibernatedoclet
        <hibernatedoclet destdir="${basedir}"
            destdir="${basedir}" excludedtags="@version,@author,@todo,@see"
            excludedtags="@version,@author,@todo,@see" addedtags="@xdoclet-generated at ${TODAY},@copyright The XDoclet Team,@author XDoclet,@version ${version}"
            addedtags="@xdoclet-generated at ${TODAY},@copyright The XDoclet Team,@author XDoclet,@version ${version}" force="true"
            force="true" verbose="false">
            verbose="false">
 <fileset dir="${basedir}">
            <fileset dir="${basedir}"> <include name="kkvo.java"/>
                <include name="kkvo.java"/> </fileset>
            </fileset>
 <hibernate version="3.0"/>
            <hibernate version="3.0"/>
 </hibernatedoclet>
        </hibernatedoclet> </target>
    </target>
 <!-- =================================================================== -->
    <!-- =================================================================== --> <!-- Compiles all the classes                                            -->
    <!-- Compiles all the classes                                            --> <!-- =================================================================== -->
    <!-- =================================================================== -->
 <target name="compile" depends="hibernate">
    <target name="compile" depends="hibernate">
 <echo>+---------------------------------------------------+</echo>
        <echo>+---------------------------------------------------+</echo> <echo>|                                                   |</echo>
        <echo>|                                                   |</echo> <echo>| C O M P I L I N G   S O U R C E S                 |</echo>
        <echo>| C O M P I L I N G   S O U R C E S                 |</echo> <echo>|                                                   |</echo>
        <echo>|                                                   |</echo> <echo>+---------------------------------------------------+</echo>
        <echo>+---------------------------------------------------+</echo>
 <javac
        <javac destdir="${basedir}"
            destdir="${basedir}" classpathref="${basedir}"
            classpathref="${basedir}" debug="on"
            debug="on" deprecation="on"
            deprecation="on" optimize="off"
            optimize="off" >
            >
 <src path="${basedir}"/>
            <src path="${basedir}"/>
 </javac>
        </javac>
 </target>
    </target>

 <!-- =================================================================== -->
    <!-- =================================================================== --> <!-- Clean                                                               -->
    <!-- Clean                                                               --> <!-- =================================================================== -->
    <!-- =================================================================== --> <target name="clean">
    <target name="clean"> <delete dir="${samples.dist.dir}"/>
        <delete dir="${samples.dist.dir}"/> </target>
    </target>
 </project>
</project>
然后,我就可以建立自己的pojo了:
 /**
/** * @author Administrator
 * @author Administrator * @hibernate.class table="testTable"
 * @hibernate.class table="testTable"  *                  dynamic-insert="true"
 *                  dynamic-insert="true" *                  dynamic-update="true"
 *                  dynamic-update="true" *
 *  */
 */ public class kkvo {
public class kkvo { Integer id;
    Integer id;
 String name;
    String name;
 /**
    /** * @hibernate.id generator-class="native"
     * @hibernate.id generator-class="native"  *                column="id"
     *                column="id"  *                type="int"
     *                type="int" *
     *  *
     *  * @return the id
     * @return the id */
     */ public Integer getId() {
    public Integer getId() { return id;
        return id; }
    }
 /**
    /** * @param id
     * @param id *            the id to set
     *            the id to set */
     */ public void setId(Integer id) {
    public void setId(Integer id) { this.id = id;
        this.id = id;
 }
    }
 /**
    /** * @hibernate.property column="name"
     * @hibernate.property column="name"  *                     type="integer"
     *                     type="integer"  *                     not-null="true"
     *                     not-null="true" * @return the name
     * @return the name */
     */ public String getName() {
    public String getName() { return name;
        return name; }
    }
 /**
    /** * @param name
     * @param name *            the name to set
     *            the name to set */
     */ public void setName(String name) {
    public void setName(String name) { this.name = name;
        this.name = name; }
    } }
}
最后,通过ant命令就可以生成该pojo的映射文件,很是方便
 
                    
                
 
     
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号