`
wangyihust
  • 浏览: 436738 次
文章分类
社区版块
存档分类
最新评论

xDoclet在Hibernate中的用法总结

阅读更多
xDoclet在Hibernate中的使用

Hibernate类:
@hibernate.class
table="teacher"
Hibernate子类:
@hibernate.joined-subclass
@hibernate.joined-subclass-key
column="tea_id"
主键:
@hibernate.id
column="tea_id"
generator-class="native"
普通属性:
@hibernate.property
column="tea_name"
1:n(1对多)
1的一头:
@hibernate.set
lazy="true"
cascade="all"
inverse="true"

@hibernate.collection-keycolumn="tea_id"

@hibernate.collection-one-to-manyclass="tms.Teacher.ZBJiangCheng"

多的一头:
@hibernate.many-to-one
column="tea_id"
class="tms.Teacher.ZBTeacher"
not-null="true"
1:1(1对1)
1的一头:
@hibernate.one-to-one name="gongzi"
class="tms.Teacher.ZBGongzi"
cascade="all"

1的另一头:
@hibernate.one-to-one
name="teacher"
class="tms.Teacher.ZBTeacher"
constrained="true"

并且其主键策略应是:
@hibernate.id
column="tea_id"
generator-class="foreign"
unsaved-value="0"

@hibernate.generator-param
name="property"
value="teacher"

另一种一头维护的1:1关系
(例如:一本书对应一个图书类型,一种图书类型对应多本书,图书类型一端不需维护对应什么书,而书的一端应维护对应哪种图书类型)
@hibernate.many-to-one
name="booktype"
column="booktype_id"
cascade="all"
not-null="true"
 

这里将利用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



  • 分享到:
    评论

    相关推荐

      XDoclet 与Hibernate 映射

      总结来说,XDoclet和Ant在Java开发中扮演着重要角色,前者简化了Hibernate映射文件的管理,后者则为项目构建和自动化提供了强大支持。通过合理的利用这两者,开发者可以提高工作效率,降低出错概率,使项目管理更加...

      为xdoclet添加hibernate智能提示

      在IT行业中,XDoclet和Hibernate是两个非常重要的工具,特别是在Java企业级开发中。XDoclet是一款基于JavaDoc的代码生成工具,它能够自动生成持久化层代码,极大地简化了开发过程。而Hibernate则是一个强大的对象...

      XDoclet2辅助开发hibernate3

      在IT行业中,尤其是在Java企业级应用开发领域,Hibernate是一个广泛使用的对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库,而无需直接编写SQL语句。然而,手动编写Hibernate的映射文件(XML文件)...

      Hibernate 的Xdoclet模板

      7. **示例应用**:为了更好地理解Xdoclet和Hibernate的结合,文章可能会提供具体的代码示例,展示如何在Java类中添加Xdoclet注释,并展示生成的配置文件内容。 通过学习这些内容,开发者不仅可以了解到过去常用的...

      Ant结合Xdoclet 实例教程(之整合 Hibernate)

      在IT行业中,Ant和Xdoclet是两个非常重要的工具,它们在Java开发中扮演着关键角色。本实例教程将深入探讨如何将它们与Hibernate框架整合,以自动化构建过程并简化项目管理。 首先,让我们理解一下Ant。Apache Ant是...

      Java Open Source Programming with XDoclet JUnit WebWork Hibernate

      《Java Open Source Programming with XDoclet JUnit WebWork Hibernate》这本书深入探讨了Java开源项目在实际开发中的集成应用。本书涵盖了XDoclet、JUnit、WebWork和Hibernate这四个关键的开源技术,旨在帮助...

      用maven的xdoclet插件t生成hibernate配置文件

      在软件开发过程中,特别是涉及到数据库交互的应用程序中,Hibernate作为一款流行的Java持久层框架,被广泛应用于对象关系映射(ORM)。而在使用Hibernate时,自动生成配置文件能够极大地提高开发效率,减少手动编写...

      xdoclet-相关配置实例

      标签中的"mvc"表明了XDoclet在Spring MVC框架中的应用。在早期的Spring版本中,XDoclet可以极大地简化Controller的配置,通过注解自动创建DispatcherServlet、RequestMapping等配置。然而,随着Spring的发展,特别是...

      struts+hibernate+spring+xdoclet+ant+log4j

      Struts、Hibernate、Spring、XDoclet、Ant和Log4j是Java开发中常见的六个重要组件,它们在企业级应用开发中发挥着关键作用。这些技术的整合为开发者提供了高效、灵活和可维护的解决方案。 **Struts** 是一个基于MVC...

      xdoclet-1.2.3.rar

      总结来说,XDoclet是一个优秀的Java开发辅助工具,尤其在EJB和Hibernate应用中,它能显著提高开发效率,减少错误,并且提供了强大的扩展能力,使开发者能够专注于核心业务逻辑,而非繁琐的配置工作。

      xdoclet-1.2.1.zip

      总结来说,xdoclet是Java开发中的一个强大工具,尤其在处理企业级应用时,能够显著提升开发效率。通过学习并熟练掌握xdoclet,开发者能够更好地应对复杂的项目需求,减少手动编码的工作量,同时保证代码的质量和一致...

      XDOCLET的使用例子

      通过在Java类中添加特殊的Javadoc标签,XDoclet可以读取这些信息并生成相应的配置文件,如Web应用的web.xml、EJB的ejb-jar.xml或者Hibernate的hibernate.cfg.xml和.hbm.xml文件。这种方式既保留了代码的可读性,又...

      xdoclet应用

      本文将深入探讨xdoclet的应用,帮助开发者理解其核心概念、工作原理以及如何在实际项目中有效利用。 首先,我们来了解xdoclet是什么。xdoclet是一个开源的Java文档注解处理器,它能够从Java源代码中的Javadoc注释中...

      xdoclet , lib

      在实际使用中,开发者还需要了解如何编写XDoclet注释,这些注释的语法和用法可以根据不同的框架和应用场景有所变化。通常,XDoclet提供了一系列预定义的注释标签,如`@ejb.bean`、`@hibernate.class`等,开发者只需...

      xdoclet-bin-1.2.3

      XDoclet是一款在Java开发领域广泛应用的开源工具,其主要功能是通过解析Java源代码中的特定注解(annotations),自动生成相应的文档、部署描述符(如web.xml、ejb-jar.xml)以及持久化层代码,极大地提高了开发效率...

      xdoclet-plugins-1.0.3下载附doc

      在Java开发领域,XDoclet因其高效自动化的特点,被广泛应用于EJB、JMS、Hibernate等框架中。本文将详细介绍XDoclet Plugins 1.0.3版本及其相关知识点。 首先,XDoclet Plugins是XDoclet的核心组件之一,它包含了一...

      XDoclet Api

      4. **Struts配置**:在Struts应用中,XDoclet可以生成struts-config.xml,使得ActionForm、Action和Forward的配置工作变得简单。 5. **其他框架支持**:除了上述框架,XDoclet还可以与许多其他的Java框架集成,如...

      ant+hibernate+xdoclet源码,文档,工具包.rar

      标题中的"ant+hibernate+xdoclet"是一个经典的Java开发框架组合,用于高效地构建企业级应用的持久层。Ant是Apache软件基金会的一个开源项目,是一个强大的构建工具,能够自动化构建过程,如编译、打包和测试。...

      xdoclet-src-1.2.3

      本文将深入探讨XDoclet及其在实际开发中的应用。 XDoclet起源于2001年,是一个开源项目,主要目标是通过分析Java源代码中的Javadoc注释,自动创建EJB、Hibernate、JMX等框架所需的元数据文件。这一特性极大地减轻了...

    Global site tag (gtag.js) - Google Analytics