Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
xdoclet 与 hibernate

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

这里将利用xdoclet来为hibernate生成相关代码(由Customer.java生成Customer.hbm.xml),看看xdoclet对提供工作效率的。

运行环境:
1、xdoclet
2、ant
3、hibernate
需要的jar包有

  • xdoclet-/X.X.X/.jar
  • xdoclet-hibernate-module-/X.X.X/.jar
  • xdoclet-xjavadoc-/X.X.X/.jar
  • xdoclet-xdoclet-module-/X.X.X/.jar
  • log4j-/X.X.X/.jar
  • commons-collections-2.0.jar
  • commons-logging.jar
  • 前四个可以从xdoclet里的lib里面找到(这里“ /X.X.X/ ” 表示版本号),后面的几个我想大家都熟了吧可以从很多地方找到。


    程序
    看下文件结构
    .(项目目录)
         |
         -src(文件夹,命名src.dir,存放源文件)
         |
         -lib(文件夹,命名lib.dir,存放上面提到的几个jar文件)
                  |
                  -*.jar
         |
         -bin(文件夹,命名bin.dir)
                 |
                 -src(文件夹,存放生成的*.java文件,这里将不用到)
                 |
                 -classes(文件夹,存放所编译的*.class文件)
       |
       -build.xml
     
    看下源程序吧。
    1、Customer.java

    /*
     * Created on 2004-12-20
     * @author roson
     */
    package hibernate;
    import java.util.Set;
    import java.util.Collections;
    /**
     * @author roson
     * @since 1.0
     * @version 1.0
     * @hibernate.class tables="customers"
     */
    public class Customer {
        /**This customer's identifier field.
         */
        private long id;
       
        /**This customer's name field.
         */
        private String name;
       
        /**The customer's orders set.
         */
        private Set orders=Collections.EMPTY_SET;
       
        /**The default construtor for Hibernate to instantiate with.
         */
        public Customer() {}
       
        /**The getter method for this Customer's identifier.
         *
         * @hibernate.id generator-class="native"
         */
        public long getId()
        {
            return id;
        }
       
        /**The setter method for this Customer's identifier.
         */
        public void setId(long id)
        {
            this.id=id;
        }
       
        /**The getter method for this Customer's name.
         *
         * @hibernate.property
         */
        public String getName()
        {
            return name;
        }
       
        /**The setter method for this Customer's name.
         */
        public void setName(String name)
        {
            this.name=name;
        }
       
        /**The getter method for this Customer's orders.
         *
         * @hibernate.set role="orders"
         *
         * @hibernate.collection-key column="customer_id"
         *
         * @hibernate.collection-one-to-many class="Order"
         */
        public Set getOrders()
        {
            return orders;
        }
       
        /**The setter method for this Customer's orders.
         */
        public void setOrders(Set orders)
        {
            this.orders=orders;
        }
    }

    可以看到在源程序中多了一些注释之类的标签,xdoclet就是通过这些标签来识别自动生成xml文件的,除此之外Customer.java与普通的javabean没什么区别。
    注意:这里Customer.java打包为hibernate,如要改动要更改一下build.xml。

    2、build.xml

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <project name="hibernate" default="compile" basedir=".">
     <property name="src.dir" location="src"></property>
     <property name="bin.dir" value="bin"></property>
     <property name="lib.dir" location="lib"></property>
     <path id="lib.path">
     <fileset dir="${lib.dir}">
     <include name="*.jar"/>
     </fileset> 
      <pathelement location="lib/xdoclet-hibernate-module-1.2.1.jar"/>
     </path>
     <target name="init">
      <tstamp>
      <format property="TODAY" pattern="yy-mm-d"/>
      </tstamp>
      <mkdir dir="bin"/>
      <mkdir dir="${bin.dir}/src"/>
      <mkdir dir="${bin.dir}/classes"/>
      <taskdef   name="hibernatedoclet"
         classname="xdoclet.modules.hibernate.HibernateDocletTask"
         classpathref="lib.path"
        />
      
      <taskdef name="ejbdoclet"
        classname="xdoclet.ejb.EjbDocletTask"
        classpathref="lib.path">
      </taskdef>
     </target>


     <target name="compile" depends="init,hibernate">
     <javac srcdir="${src.dir};${bin.dir}/src" destdir="${bin.dir}/classes">
     <classpath refid="lib.path"></classpath>
     </javac>
     </target>
     

     <target name="hibernate" depends="init">
      <hibernatedoclet
       destdir="${bin.dir}"
       mergedir="${bin.dir}"
       force="${bin.dir}"
       excludedtags="@version,@author,@todo"
       addedtags="@xdoclet-generated at ${TODAY},@copyright netone,@author roson,@version ${version}"
       verbose="false"
       >
       <fileset dir="${src.dir}">
       <include name="*.java"/>
       </fileset>
       <hibernate version="2.0"/>
      </hibernatedoclet>
     </target>
     
     
     <target name="clean">
     <delete dir="${bin.dir}"></delete>
     </target>
    </project>

    build.xml文件通过ant来运行。首先 请确保ant能够运行,接着 打开 命令提示行(在运行那里输入cmd),转到上面结构所提的“项目目录”,直接输入  ant    就行。
    注意:
    最让我烦恼的就是 taskdef 部分。原因就是没有把所需要的jar包放进 lib 文件夹。并且要理解的是,它所需的classname="xdoclet.modules.hibernate.HibernateDocletTask"  ,并不仅仅要求含有HibernateDocletTask.class这个文件的包,而是同时需要几个包同时存在。希望大家不要在犯同样的错误。

    好了,大体就是这样了。可以参照http://www.hibernate.org/72.html




    相关文章

    相关软件