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和Ant在Java开发中扮演着重要角色,前者简化了Hibernate映射文件的管理,后者则为项目构建和自动化提供了强大支持。通过合理的利用这两者,开发者可以提高工作效率,降低出错概率,使项目管理更加...
在IT行业中,XDoclet和Hibernate是两个非常重要的工具,特别是在Java企业级开发中。XDoclet是一款基于JavaDoc的代码生成工具,它能够自动生成持久化层代码,极大地简化了开发过程。而Hibernate则是一个强大的对象...
在IT行业中,尤其是在Java企业级应用开发领域,Hibernate是一个广泛使用的对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库,而无需直接编写SQL语句。然而,手动编写Hibernate的映射文件(XML文件)...
7. **示例应用**:为了更好地理解Xdoclet和Hibernate的结合,文章可能会提供具体的代码示例,展示如何在Java类中添加Xdoclet注释,并展示生成的配置文件内容。 通过学习这些内容,开发者不仅可以了解到过去常用的...
在IT行业中,Ant和Xdoclet是两个非常重要的工具,它们在Java开发中扮演着关键角色。本实例教程将深入探讨如何将它们与Hibernate框架整合,以自动化构建过程并简化项目管理。 首先,让我们理解一下Ant。Apache Ant是...
《Java Open Source Programming with XDoclet JUnit WebWork Hibernate》这本书深入探讨了Java开源项目在实际开发中的集成应用。本书涵盖了XDoclet、JUnit、WebWork和Hibernate这四个关键的开源技术,旨在帮助...
在软件开发过程中,特别是涉及到数据库交互的应用程序中,Hibernate作为一款流行的Java持久层框架,被广泛应用于对象关系映射(ORM)。而在使用Hibernate时,自动生成配置文件能够极大地提高开发效率,减少手动编写...
标签中的"mvc"表明了XDoclet在Spring MVC框架中的应用。在早期的Spring版本中,XDoclet可以极大地简化Controller的配置,通过注解自动创建DispatcherServlet、RequestMapping等配置。然而,随着Spring的发展,特别是...
Struts、Hibernate、Spring、XDoclet、Ant和Log4j是Java开发中常见的六个重要组件,它们在企业级应用开发中发挥着关键作用。这些技术的整合为开发者提供了高效、灵活和可维护的解决方案。 **Struts** 是一个基于MVC...
总结来说,XDoclet是一个优秀的Java开发辅助工具,尤其在EJB和Hibernate应用中,它能显著提高开发效率,减少错误,并且提供了强大的扩展能力,使开发者能够专注于核心业务逻辑,而非繁琐的配置工作。
总结来说,xdoclet是Java开发中的一个强大工具,尤其在处理企业级应用时,能够显著提升开发效率。通过学习并熟练掌握xdoclet,开发者能够更好地应对复杂的项目需求,减少手动编码的工作量,同时保证代码的质量和一致...
通过在Java类中添加特殊的Javadoc标签,XDoclet可以读取这些信息并生成相应的配置文件,如Web应用的web.xml、EJB的ejb-jar.xml或者Hibernate的hibernate.cfg.xml和.hbm.xml文件。这种方式既保留了代码的可读性,又...
本文将深入探讨xdoclet的应用,帮助开发者理解其核心概念、工作原理以及如何在实际项目中有效利用。 首先,我们来了解xdoclet是什么。xdoclet是一个开源的Java文档注解处理器,它能够从Java源代码中的Javadoc注释中...
在实际使用中,开发者还需要了解如何编写XDoclet注释,这些注释的语法和用法可以根据不同的框架和应用场景有所变化。通常,XDoclet提供了一系列预定义的注释标签,如`@ejb.bean`、`@hibernate.class`等,开发者只需...
XDoclet是一款在Java开发领域广泛应用的开源工具,其主要功能是通过解析Java源代码中的特定注解(annotations),自动生成相应的文档、部署描述符(如web.xml、ejb-jar.xml)以及持久化层代码,极大地提高了开发效率...
在Java开发领域,XDoclet因其高效自动化的特点,被广泛应用于EJB、JMS、Hibernate等框架中。本文将详细介绍XDoclet Plugins 1.0.3版本及其相关知识点。 首先,XDoclet Plugins是XDoclet的核心组件之一,它包含了一...
4. **Struts配置**:在Struts应用中,XDoclet可以生成struts-config.xml,使得ActionForm、Action和Forward的配置工作变得简单。 5. **其他框架支持**:除了上述框架,XDoclet还可以与许多其他的Java框架集成,如...
标题中的"ant+hibernate+xdoclet"是一个经典的Java开发框架组合,用于高效地构建企业级应用的持久层。Ant是Apache软件基金会的一个开源项目,是一个强大的构建工具,能够自动化构建过程,如编译、打包和测试。...
本文将深入探讨XDoclet及其在实际开发中的应用。 XDoclet起源于2001年,是一个开源项目,主要目标是通过分析Java源代码中的Javadoc注释,自动创建EJB、Hibernate、JMX等框架所需的元数据文件。这一特性极大地减轻了...