- 浏览: 77047 次
- 性别:
- 来自: 北京
最新评论
-
wteqiao:
[color=orange][/color]
annotation(@Retention) -
hanwesley:
谢谢,我在你的基础之上学习的。感觉还不错。
我理解的lucene原理(初级) -
DepthJava:
一直没找到,能完全解析EMial的方法。包括MIME解析
乱 ...
MIME协议分析(转) -
hardPass:
能看看你的mvc-config.xml 啊?
自制MVC框架:TonyMVC -
geek87:
非常好的资料..支持一下
spring2.5 注解技术
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>
发表评论
-
自制MVC框架:TonyMVC
2009-08-19 11:39 1682MVC框架已经使用的非常广泛了,现在我也自制一个MVC框架来加 ... -
spring MVC
2009-08-14 20:15 1158第一步:在web.xml文件中加入<listener&g ... -
hibernate中hbm详解
2009-03-31 17:32 12291. 主键( id ) Hibernate的 ... -
spring2.5 注解技术
2009-03-30 17:58 4462注释配置和 XML 配置的适用场合 是否有了这些 IOC ... -
jpa的了解
2009-03-29 19:44 11491 jpa对hibernate编程所需要引入的包: h ... -
hbm2dll的使用
2009-03-29 13:04 1278在开发过程中,我们可以先设计数据库,然后由MyEclipse自 ... -
spirng aop(非注释方式)
2009-03-04 18:40 954在某些时候,我们工程中使用的JDK 不一定就是1.5 以 ... -
dao时测试getHiberanteTemple()为null
2009-02-14 18:56 749在对写的一个DAO进行junit测试时,发现getHibera ... -
spring中读取applicationgContext.xml
2009-02-14 18:35 1047当我把spring的配置文件转移到WEB-INF目录下以后,再 ... -
struts1异常的处理分析
2009-02-13 16:40 21981 异常链 当不需要用户来处理和关心原始的异常时,常见的做 ... -
org.apache.commons.dbcp.BasicDataSource找不到?
2009-02-10 16:04 3158在spring的配置文件中org.apache.commons ... -
ssh整合开发
2009-02-06 11:05 13071 加入j2ee的jar包。放入lib中来 (注意,最好把ja ... -
createProxy(AbstractEntityTuplizer.java:372)异常的解决方
2009-02-06 11:00 759http://hi.baidu.com/ligong_haer ... -
Spring控制的Hibernate中代理异常
2008-12-27 19:06 863阅读全文 类别:默认分类?查看评论 -
Struts2.0学习笔记
2009-01-19 14:48 678阅读全文 类别:默认分类?查看评论 -
struts2.0学习笔记2
2009-01-20 16:36 648阅读全文 类别:默认分类?查看评论
相关推荐
下面通过一个具体的例子来详细介绍Xdoclet标签的使用方法: ```java /** @hibernate.class table="T_Party" */ public class Party { /** @hibernate.id generator-class="native" */ private int id; /** @...
Xdoclet是一个开源工具,它允许开发者在Java源代码中使用特定的Javadoc注释来生成各种元数据,如配置文件、部署描述符等。这个工具对于自动化开发过程中的任务非常有用,特别是在Java持久化框架如Hibernate中,可以...
1. **Xdoclet介绍**:首先,文章可能会解释Xdoclet的基本原理,它是如何通过解析Java源代码中的Javadoc注释来生成相应的配置文件的。Xdoclet的工作流程,包括读取源码、解析注释、生成模板和最后的代码生成。 2. **...
1. **XDoclet介绍**:XDoclet是一个基于Javadoc的代码生成工具,通过解析Java源代码中的特定注释,能够生成各种框架所需的配置文件或源代码,如Hibernate的hbm.xml文件和EJB的ejb-jar.xml文件。 2. **Eclipse集成**...
本文将详细介绍如何在MyEclipse环境中利用XDoclet生成HBM文件。 首先,确保你的开发环境是Eclipse 3.0.1和MyEclipse 3.8.3。这两个工具集成了对XDoclet的支持,使得生成HBM文件变得简单易行。根据Hibernate ...
第12章“自定义代码生成与XDoclet”主要介绍了如何利用XDoclet的模板、标签和任务来编写自己的代码生成逻辑。书中详细阐述了以下内容: 1. **编写模板**:XDoclet使用模板语言来生成Java代码。开发者可以根据需求...
### XDoclet入门教程 #### 一、XDoclet简介 ...通过上述介绍,读者应该对XDoclet有了基本的认识,并了解了如何使用XDoclet来生成配置文件。在实际开发中,可以根据项目需求灵活地使用XDoclet来提高工作效率。
本文将详细介绍XDoclet Plugins 1.0.3版本及其相关知识点。 首先,XDoclet Plugins是XDoclet的核心组件之一,它包含了一系列用于扩展XDoclet功能的插件。在Xdoclet-plugins-1.0.3这个版本中,开发者可以找到用于...
此外,压缩包中的"Xdoclet介绍.doc"和"Ant介绍.doc"提供了更详细的资料,包括这两个工具的基本概念、用法、配置示例以及常见问题解答。通过深入阅读这些文档,你将能更全面地理解Xdocle和Ant的特性,从而更好地将...
1. **使用详情.doc**:这是一个文档,详细介绍了如何在Eclipse项目中配置和使用XDoclet-1.2.1。通过阅读这个文档,开发者可以了解到安装步骤、配置过程以及如何在实际项目中应用XDoclet的各种功能。对于初学者来说,...
#### 七、XDT模板语言介绍 **XDT模板语言**是XDoclet提供的用于生成文件的模板语言。它类似于JSP,但专为XDoclet设计。XDT模板可以访问由XDoclet解析器提取出来的Java源代码的元数据,并根据这些元数据生成最终的...
本文旨在详细介绍如何使用Xdoclet插件配合Maven来生成Hibernate所需的配置文件。 #### 环境搭建 在开始之前,我们需要确保以下环境已经准备就绪: - **操作系统**:Windows Server 2003 Standard Edition - **Java...
其次,书中详细介绍了如何集成XDoclet到开发环境中,包括使用Maven、Ant等构建工具配置XDoclet插件。对于Maven用户,可以在pom.xml文件中添加XDoclet的依赖和插件配置,而对于Ant用户,则需要在build.xml文件中编写...
这篇博客文章“Hibernate使用xdoclet生成映射文件和sql语句”可能详细介绍了如何结合这两个工具进行开发。 在早期的Java开发中,XDoclet是基于Javadoc注解的工具,它可以解析Java类中的特定注解,并根据这些注解...
本文将详细介绍XDoclet Plugins Dist 1.0.4这一版本的特性、用途以及其包含的内容。 1. XDoclet概述: XDoclet最初由Hani Suleiman开发,于2000年发布,其核心功能在于通过解析Java源代码中的Javadoc注释,生成...
- 用户手册:详细介绍了如何使用XDoclet,包括安装步骤、基本用法和高级特性。 - API参考:列出了所有可用的注解和插件,以及它们的参数和行为说明。 - 示例代码:提供了实际的Java源代码示例,展示如何在项目中...
2. "appfuse.doc":这是一个关于AppFuse的文档,可能详细介绍了AppFuse的架构、使用方法以及常见问题解答。 3. "XDoclet Tags.doc":这可能是关于XDoclet的标签文档,解释了如何使用XDoclet的注解来生成不同类型的...
本文将详细介绍如何为XDoclet添加Hibernate智能提示,以便在开发过程中提供更高效的支持。 首先,我们需要理解XDoclet的工作原理。XDoclet通过解析源代码中的Javadoc注释来生成额外的代码或配置文件。当我们在Java...