- 浏览: 74793 次
- 性别:
- 来自: 北京
最新评论
-
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 1624MVC框架已经使用的非常广泛了,现在我也自制一个MVC框架来加 ... -
spring MVC
2009-08-14 20:15 1115第一步:在web.xml文件中加入<listener&g ... -
hibernate中hbm详解
2009-03-31 17:32 11861. 主键( id ) Hibernate的 ... -
spring2.5 注解技术
2009-03-30 17:58 4421注释配置和 XML 配置的适用场合 是否有了这些 IOC ... -
jpa的了解
2009-03-29 19:44 11071 jpa对hibernate编程所需要引入的包: h ... -
hbm2dll的使用
2009-03-29 13:04 1221在开发过程中,我们可以先设计数据库,然后由MyEclipse自 ... -
spirng aop(非注释方式)
2009-03-04 18:40 914在某些时候,我们工程中使用的JDK 不一定就是1.5 以 ... -
dao时测试getHiberanteTemple()为null
2009-02-14 18:56 695在对写的一个DAO进行junit测试时,发现getHibera ... -
spring中读取applicationgContext.xml
2009-02-14 18:35 1002当我把spring的配置文件转移到WEB-INF目录下以后,再 ... -
struts1异常的处理分析
2009-02-13 16:40 21581 异常链 当不需要用户来处理和关心原始的异常时,常见的做 ... -
org.apache.commons.dbcp.BasicDataSource找不到?
2009-02-10 16:04 3092在spring的配置文件中org.apache.commons ... -
ssh整合开发
2009-02-06 11:05 12681 加入j2ee的jar包。放入lib中来 (注意,最好把ja ... -
createProxy(AbstractEntityTuplizer.java:372)异常的解决方
2009-02-06 11:00 714http://hi.baidu.com/ligong_haer ... -
Spring控制的Hibernate中代理异常
2008-12-27 19:06 823阅读全文 类别:默认分类?查看评论 -
Struts2.0学习笔记
2009-01-19 14:48 641阅读全文 类别:默认分类?查看评论 -
struts2.0学习笔记2
2009-01-20 16:36 614阅读全文 类别:默认分类?查看评论
相关推荐
Xdoclet介绍[1].docx
我们可以在java代码中使用类似于javadoc的注释,来表达更多的内容。这些额外的注释,通过使用xdoclet工具,我们可以将它们转换为我们需要的各种配置文件。先看一个简单的
本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及...
然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,比如: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss。这容易让人产生Hibernate复杂难懂的误解,特别是打击了初学者的积极性。在本文中将不...
然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,比:Tomcat,Eclipse,Log4J,Struts,XDoclet,甚至JBoss。这容易让人产生Hibernate复杂难懂的误解,特别是打击了初学者的积极性。在这篇文章将不涉及...
关于用hibernate映射类时涉及到一个问题: 1.先创建数据表再写JOPO类和映射... 现结合自身实践对第2种做些介绍,有问题请名位大大指正。 假设工程为myeclipse web工程。现在POJO已经编好,并且Xdoclet注释都正确编写。
该教程对Eclipse的环境进行介绍,Eclipse的数据库开发,Eclipse的Ant开发,Eclipse的XDoclet开发等等
关于《java开放源码编程》此书介绍了如何通过使用开放源码工具来构建一个现实的应用,以提高开发效率,降低企业开发费用。 本书共分三个部分,使基本概念、使用工具和开发应用三个过程贯穿于读者的学习当中。特别是...
@hibernate Tag Reference 最近在做hibernate项目,发现XDoclet中关于@hibernate Tag的介绍较少,我从网上扣下来,整理成文,供大家共享。
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配合使用的Struts,JSF以及Spring等优秀的框架组件。另外,还涉及到了在开发中常会使用到的开源组件,包括Ant,Digester,XDoclet,Log4j,Eclipse和JFreeChart...
内容提要 : 本书分为三大部分和两个附录,每一部分专注于Spring框架的一个领域...——Norman Richards,XDoclet in Action的作者之一 “我极力推荐这本书。” ——Jack Herrington,Code Generation in Action的作者
内容提要 : 本书分为三大部分和两个附录,每一部分专注于Spring框架的一个领域...——Norman Richards,XDoclet in Action的作者之一 “我极力推荐这本书。” ——Jack Herrington,Code Generation in Action的作者
然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,比如: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss。这容易让人产生Hibernate复杂难懂的误解,特别是打击了初学者的积极性。
作者: 夏昕 曹晓钢 唐勇 [作译者介绍] 出版社:电子工业出版社 ISBN:7121006707 上架时间:2005-4-14 出版日期:2005 年5月 开本:16开 页码:512 版次:1-1 本书由互联网上影响广泛的开放文档OpenDoc系列...
本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及如何将...
本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及如何将...
本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及如何将...
本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及如何将...
本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及...