`
sunqitang
  • 浏览: 74792 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Xdoclet 介绍

    博客分类:
  • SSH
阅读更多

Xdoclet 基本概念

我们可以在 java 代码中使用类似于 javadoc 的注释,来表达更多的内容。这些额外的注释,通过使用 xdoclet 工具,我们可以将它们转换为我们需要的各种配置文件。先看一个简单的例子:

比如有一个 java 文件的源代码如下:

   productType跟自己是一对多的关系:这种情况比较特殊,set和many-to-one对应的均为外键

package com.babasport.VO;

import java.util.Set;


/**
 * @hibernate.class 
 * table="productType"
 * @author sunqitang
 *
 */
public class ProductType {
	/**  商品类别Id  **/
	private Integer productTypeId;
	/**  商品类别名称  **/
	private String productTypeName;
	/**  商品类别google搜索内容  **/
	private String productTypeGoogle;
	/**  商品类别备注  **/
	private String productTypeNote;
	/**  商品类别的子类别  **/
	private Set<ProductType> subProductTypes;
	/**  商品类别的父类   **/
	private ProductType parentProductType;
	/**
	 * @hibernate.many-to-one 
	 * column="parentProductType" 
	 * class="com.babasport.VO.ProductType"
	 * @return
	 */
//这里也为目标对象的Id
	public ProductType getParentProductType() {
		return parentProductType;
	}
	public void setParentProductType(ProductType parentProductType) {
		this.parentProductType = parentProductType;
	}
	/**
	 * @hibernate.set 
	 * cascade="all" 
	 * inverse="true" 
	 * lazy="true"
	 * @hibernate.key column="parentProductType"
	 * @hibernate.one-to-many class="com.babasport.VO.ProductType"
	 * @return
	 */
//这里的key的column为目标对象的Id
	public Set<ProductType> getSubProductTypes() {
		return subProductTypes;
	}
	public void setSubProductTypes(Set<ProductType> subProductTypes) {
		this.subProductTypes = subProductTypes;
	}
	/**
	 * @hibernate.id 
	 * generator-class="native" 
	 * @return
	 */
	public Integer getProductTypeId() {
		return productTypeId;
	}
	public void setProductTypeId(Integer productTypeId) {
		this.productTypeId = productTypeId;
	}
	/**
	 * @hibernate.property 
	 * not-null="true" 
	 * length="16" 
	 * @return
	 */
	public String getProductTypeName() {
		return productTypeName;
	}
	public void setProductTypeName(String productTypeName) {
		this.productTypeName = productTypeName;
	}
	/**
	 * @hibernate.property 
	 * length="100"
	 * @return
	 */
	public String getProductTypeGoogle() {
		return productTypeGoogle;
	}
	public void setProductTypeGoogle(String productTypeGoogle) {
		this.productTypeGoogle = productTypeGoogle;
	}
	/**
	 * @hibernate.property 
	 * length="100"
	 * @return
	 */
	public String getProductTypeNote() {
		return productTypeNote;
	}
	public void setProductTypeNote(String productTypeNote) {
		this.productTypeNote = productTypeNote;
	}
	
	
}
 

 

通过 xdoclet ,我们可以得到关于这个类的 Hibernate 映射文件,如下:

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="VO.Producttype" table="producttype" catalog="test">
        <id name="id" type="java.lang.String">
            <column name="id" length="10" />
            <generator class="native" />
        </id>
        <many-to-one name="producttype" class="VO.Producttype" fetch="select">
            <column name="sub" length="10" />
        </many-to-one>
        <set name="producttypes" inverse="true">
            <key>
                <column name="sub" length="10" />
            </key>
            <one-to-many class="VO.Producttype" />
        </set>
    </class>
</hibernate-mapping>
 

另个例子:Type和user是一对多的关系:set对应的 key为userId,many-to-one对应的为typeID

type.java

package VO;

import java.util.Set;

/**
 * @hibernate.class table="Type"
 * @author sunqitang
 *
 */
public class Type {
	private Integer typeId;
	private Integer typeName;
	private Set<User> users;
	/**
	 * @hibernate.id generator-class="native"
	 * @return
	 */
	public Integer getTypeId() {
		return typeId;
	}
	public void setTypeId(Integer typeId) {
		this.typeId = typeId;
	}
	/**
	 * @hibernate.property 
	 * @return
	 */
	public Integer getTypeName() {
		return typeName;
	}
	public void setTypeName(Integer typeName) {
		this.typeName = typeName;
	}
	/**
	 * @hibernate.set 
	 * cascade="all"
	 * inverse="true"
	 * @hibernate.key column="userId"
	 * @hibernate.one-to-many class="VO.User" 
	 * @return
	 */
	public Set<User> getUsers() {
		return users;
	}
	public void setUsers(Set<User> users) {
		this.users = users;
	}
}

 user.java

package VO;
/**
 * @hibernate.class table="User"
 * @author sunqitang
 *
 */
public class User {
	private Integer userId;
	private String  userName;
	private Type type;
	/**
	 * @hibernate.id
	 * generator-class="native"
	 * @return
	 */
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	/**
	 * @hibernate.property 
	 * @return
	 */
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	/**
	 * @hibernate.many-to-one column="typeId" class="VO.Type"
	 * @return
	 */
	public Type getType() {
		return type;
	}
	public void setType(Type type) {
		this.type = type;
	}
}

 生成的hbm为:

type.hbm.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
  <class table="Type" name="VO.Type">
    <id name="typeId">
      <generator class="native"/>
    </id>
    <property name="typeName"/>
    <set inverse="true" cascade="all" name="users">
      <key column="userId"/>
      <one-to-many class="VO.User"/>
    </set>
  </class>
</hibernate-mapping>

 user.hbm.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
  <class table="User" name="VO.User">
    <id name="userId">
      <generator class="native"/>
    </id>
    <property name="userName"/>
    <many-to-one column="typeId" name="type" class="VO.Type"/>
  </class>
</hibernate-mapping>
 

 

使用xdoclet来生成hbm文件。

 
<?xml version="1.0" encoding="UTF-8"?>
<project name="OA系统构建脚本" default="生成hibernate映射文件" basedir=".">

   	<property name="src.dir" value="${basedir}/src"/>
   	<property name="build.dir" value="${basedir}/bin"/>
	<property name="webapp.dir" value="${basedir}/src/webapp"/>
	<property name="xdoclet.home" value="D:\\JAVA电子资源\\组件\\Xdoclet\\xdoclet-plugins-1.0.3\\xdoclet-plugins-1.0.3"/>

   	<!-- Build classpath -->
   	<path id="xdoclet.task.classpath">
      	<fileset dir="${xdoclet.home}/lib">
         	<include name="**/*.jar"/>
      	</fileset>
      	<fileset dir="${xdoclet.home}/plugins">
         	<include name="**/*.jar"/>
      	</fileset>
   	</path>
	<taskdef 
		name="xdoclet"
		classname="org.xdoclet.ant.XDocletTask"
		classpathref="xdoclet.task.classpath"
	/>
	
	<target name="生成hibernate映射文件">
		<xdoclet>
			<fileset dir="${src.dir}/com/babasport/VO">
				<include name="**/*.java"/>
			</fileset>
			<component 
				classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin"
				version="3.0"
				destdir="${src.dir}"
			/>
		</xdoclet>
	</target>
</project>
分享到:
评论

相关推荐

    Xdoclet介绍

    Xdoclet介绍[1].docx

    Xdoclet介绍及示例.........

    我们可以在java代码中使用类似于javadoc的注释,来表达更多的内容。这些额外的注释,通过使用xdoclet工具,我们可以将它们转换为我们需要的各种配置文件。先看一个简单的

    Spring In Action中文 第八部分

    本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及...

    Java开源项目Hibernate快速入门

    然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,比如: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss。这容易让人产生Hibernate复杂难懂的误解,特别是打击了初学者的积极性。在本文中将不...

    最简单的Hibernate入门简介

    然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,比:Tomcat,Eclipse,Log4J,Struts,XDoclet,甚至JBoss。这容易让人产生Hibernate复杂难懂的误解,特别是打击了初学者的积极性。在这篇文章将不涉及...

    新建 Micro用ant执行POJO自动生成映射文件及数据表soft Word 文档

    关于用hibernate映射类时涉及到一个问题: 1.先创建数据表再写JOPO类和映射... 现结合自身实践对第2种做些介绍,有问题请名位大大指正。 假设工程为myeclipse web工程。现在POJO已经编好,并且Xdoclet注释都正确编写。

    Eclipse 教程

    该教程对Eclipse的环境进行介绍,Eclipse的数据库开发,Eclipse的Ant开发,Eclipse的XDoclet开发等等

    java开放源码编程-符书源码

    关于《java开放源码编程》此书介绍了如何通过使用开放源码工具来构建一个现实的应用,以提高开发效率,降低企业开发费用。 本书共分三个部分,使基本概念、使用工具和开发应用三个过程贯穿于读者的学习当中。特别是...

    @hibernate Tag Reference

    @hibernate Tag Reference 最近在做hibernate项目,发现XDoclet中关于@hibernate Tag的介绍较少,我从网上扣下来,整理成文,供大家共享。

    JavaWeb 开发指南 PPT课件

    4章 Servlet技术介绍 5章 JavaBean与JSP技术 6章 JSP文件操作 7章 JSP Web应用的会话管理 8章 JSP 2.4技术 9章 自定义JSP标签 10章 JSP标准标签库(JSTL) 11章 关系数据库与JDBC基础 12章 JSP与Java Mail Web应用 13...

    Hibernate项目开发宝典 源码

    本书在讲解Hibernate的同时,还介绍了经常与Hibernate配合使用的Struts,JSF以及Spring等优秀的框架组件。另外,还涉及到了在开发中常会使用到的开源组件,包括Ant,Digester,XDoclet,Log4j,Eclipse和JFreeChart...

    Spring in Action中文版 清晰pdf part2

    内容提要 : 本书分为三大部分和两个附录,每一部分专注于Spring框架的一个领域...——Norman Richards,XDoclet in Action的作者之一 “我极力推荐这本书。” ——Jack Herrington,Code Generation in Action的作者

    Spring in Action中文版 清晰pdf part1

    内容提要 : 本书分为三大部分和两个附录,每一部分专注于Spring框架的一个领域...——Norman Richards,XDoclet in Action的作者之一 “我极力推荐这本书。” ——Jack Herrington,Code Generation in Action的作者

    Hibernate入门简介

    然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,比如: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss。这容易让人产生Hibernate复杂难懂的误解,特别是打击了初学者的积极性。

    深入浅出Hibernate.pdf

    作者: 夏昕 曹晓钢 唐勇 [作译者介绍] 出版社:电子工业出版社 ISBN:7121006707 上架时间:2005-4-14 出版日期:2005 年5月 开本:16开 页码:512 版次:1-1 本书由互联网上影响广泛的开放文档OpenDoc系列...

    Spring In Action中文 第三部分

    本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及如何将...

    Spring In Action中文 第一部分

    本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及如何将...

    Spring In Action中文 第二部分

    本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及如何将...

    Spring In Action中文 第四部分

    本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及如何将...

    Spring In Action中文 第五部分

    本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及...

Global site tag (gtag.js) - Google Analytics