这次我们用OA中常用的 人员、组织、用户三个对象来做测试,组织的对象模型为:
public class Organization {
/**
* @hibernate.id generator-class="native"
*/
private int id;
/**
* @hibernate.property
*/
private String name;
/**
* @hibernate.property
*/
private String sn;
/**
* @hibernate.property
*/
private String description;
/**
* @hibernate.many-to-one column="pid"
*/
private Organization parent;
/**
* @hibernate.set inverse="true" lazy="extra"
* @hibernate.key column="pid"
* @hibernate.one-to-many class="org.darkness.oa.model.Organization"
*/
private Set<Organization> children;
}
人员的对象模型为:
public class Person {
/**
* @hibernate.id generator-class="native"
*/
private int id;
/**
* @hibernate.property
*/
private String name;
/**
* @hibernate.property
*/
private String sex;
/**
* @hibernate.property
*/
private String address;
/**
* @hibernate.property
*/
private String duty;
/**
* @hibernate.property
*/
private String phone;
/**
* @hibernate.property
*/
private String description;
/**
* @hibernate.many-to-one
*/
private Organization org;
/**
* Person 1-----1 User
*
* @hibernate.one-to-one property-ref="person"
*/
private User user;
}
系统用户的对象模型为:
public class User {
/**
* @hibernate.id generator-class="native"
*/
private int id;
/**
* 登录帐号
*
* @hibernate.property not-null="true" unique="true"
*/
private String username;
/**
* 登录密码
*
* @hibernate.property not-null="true"
*/
private String password;
/**
* 帐号创建时间
*
* @hibernate.property update="false"
*/
private Date createTime;
/**
* 帐号失效时间
*
* @hibernate.property
*/
private Date expireTime;
/**
* 对应的人员信息 User 1----1 Person
*
* @hibernate.many-to-one unique="true"
*/
private Person person;
}
注意到我们编写的这几个类中在属性上都有@hibernate标志开头的一些注释,这个上hibernate提供给xdoclet用来生成对应hbm文件的标注语言,有了它,我们就可以通过xdoclet将我们的标注提取出来生成hbm文件来,这样有两点好处:
1、节约了我们手动编写hbm映射文件的时间,提高了编程效率
2、以后一旦改动来代码,我们不需要烦心我们的映射文件与对应的类不匹配,减小来维护带来的成本,提高了系统的可维护性
下面我们来看一下对应的ant脚本:
<?xml version="1.0" encoding="UTF-8"?>
<project name="系统构建脚本" default="build" basedir=".">
<property name="src.dir" value="${basedir}/src" />
<property name="xdoclet.home" value="D:/java/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>
<path id="classpath">
<fileset dir="${basedir}/lib">
<include name="**/*.jar" />
</fileset>
</path>
<target name="build">
<delete dir="${basedir}/bin/org" />
<mkdir dir="${basedir}/bin/org" />
<javac srcdir="." destdir="${basedir}/bin" debug="true" debuglevel="lines,vars,source">
<!--<compilerarg value="-encoding gb2312 "/>-->
<classpath refid="classpath" />
</javac>
</target>
<taskdef name="xdoclet" classname="org.xdoclet.ant.XDocletTask" classpathref="xdoclet.task.classpath" />
<target name="生成Hibernate配置文件">
<xdoclet>
<fileset dir="${src.dir}">
<include name="**/*.java" />
</fileset>
<component classname="org.xdoclet.plugin.hibernate.HibernateConfigPlugin" destdir="${src.dir}" version="3.0" hbm2ddlauto="update" jdbcurl="jdbc:mysql://127.0.0.1/test" jdbcdriver="com.mysql.jdbc.Driver" jdbcusername="root" jdbcpassword="root" dialect="org.hibernate.dialect.MySQLDialect" showsql="true" />
</xdoclet>
</target>
<target name="生成hibernate映射文件">
<xdoclet>
<fileset dir="${basedir}/src/org/darkness/oa/model">
<include name="**/*.java" />
</fileset>
<component classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin" version="3.0" destdir="${src.dir}" />
</xdoclet>
</target>
</project>
需要注意一点的就上xdoclet.home对应到下载的xdoclet的根目录就可以了
这样我们运行一下ant,model对应的hbm文件就自动生成了。
分享到:
相关推荐
《使用Hibernate和XDoclet生成映射文件与SQL语句详解》 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,为了实现对象与数据库表之间的映射,我们需要编写XML映射...
在Java类中,我们只需要添加适当的Javadoc注释,Xdoclet就会根据这些注释生成对应的.hbm.xml映射文件和Hibernate配置文件。而Ant则负责编译源代码、运行Xdoclet以及执行其他构建任务。 具体步骤如下: 1. **设置...
5. **Hibernate支持**:对于Hibernate项目,XDoclet可以生成.hbm.xml映射文件,避免手动编写这些文件。同时,它还可以为实体类生成CRUD操作的基础代码。 6. **Struts支持**:XDoclet可以帮助生成Struts的ActionForm...
《Xdoclet生成*.hbm.xml映射文件详解》 在Java开发中,尤其是在使用Hibernate作为持久层框架时,数据库模型与Java对象之间的映射文件*.hbm.xml是必不可少的。这种映射文件定义了数据库表与Java实体类之间的对应关系...
Eclipse会自动检测源代码中的注释,并在编译期间调用XDoclet生成相应的配置或代码文件,这样可以保持源代码与生成文件的一致性。 **Ant任务** Ant是Apache软件基金会的构建工具,它以XML为基础定义构建过程。在...
为了生成Hibernate配置文件,我们需要编写一个Ant脚本来调用Xdoclet。这里是一个简单的示例脚本: ```xml <property name="doclet.dir" value="target/xdoclet"/> ${src.dir}" includes="**/*.class"/> $...
(mapping file)、jdo、jmx等等生成描述文件、源码等,XDoclet提供了ant的任务target支持,完全通过ant来完成任务。 我们只须在项目中引入xjavadoc-1.1.jar、xdoclet-hibernate-module-1.2.3.jar等等所需要的jar包就...
一旦解析了这些标签,XDoclet就会生成相应的配置文件,这些文件通常是项目运行所必需的,比如EJB的ejb-jar.xml或Hibernate的.hbm.xml文件。 **XDoclet的主要功能** 1. **EJB生成**:XDoclet可以自动为Enterprise ...
- **Hibernate支持**:对于ORM框架Hibernate,XDoclet能够自动生成实体类、映射文件(hbm.xml)以及DAO层的接口和实现。这样,开发者只需要关注数据库模型的设计,无需手动编写繁琐的持久化代码。 - **JMX管理**...
XDoclet 是一款强大的Java注解处理工具,它允许开发者在Java源代码中添加元数据,这些元数据可以用来自动生成各种配置文件,包括Hibernate的映射文件(hbm.xml)。这种方式极大地提高了开发效率,避免了手动创建和...
- **Hibernate**:对于Hibernate,XDoclet能生成hbm.xml映射文件,简化对象关系映射的配置。 - **JBOSS**:支持JBOSS应用服务器的特定配置文件生成。 - **Web Services**:通过使用特定插件,XDoclet可以生成Web服务...
XDoclet是ANT的一个插件,它允许开发者通过在Java源代码中的注释来生成各种元数据,包括Hibernate的映射文件(.hbm.xml)。这样,开发者无需手动编写这些映射文件,只需在类和属性上添加特定的注释,XDoclet就会...
XDoclet是一款强大的Java文档注解处理器,它能够根据Java源代码中的特定注解自动生成各种配置文件,比如Hibernate的映射文件(*.hbm.xml)、EJB的部署描述符等。在Java持久化编程中,XDoclet的使用极大地提高了开发...
4. **使用步骤**:文章可能会提供一个详细的步骤指南,教读者如何将Xdoclet集成到Eclipse项目中,包括安装插件、配置项目属性、编写注释以及运行Xdoclet生成代码和配置。 5. **优点与缺点**:文章可能会讨论使用...
Hibernate 中的 Middlegen 入门指南是利用 Middlegen 生产 hbm.xml 文件的工具,旨在帮助开发者快速生成 Hibernate 的配置文件。通过本指南,开发者可以快速掌握 Middlegen 的使用方法,并快速生成 Hibernate 的配置...
2. **Hibernate插件**:对于ORM(对象关系映射)框架Hibernate,XDoclet可以读取实体类上的Javadoc注释,生成Hibernate的配置文件(hibernate.cfg.xml)和映射文件(*.hbm.xml)。这使得开发者可以专注于业务逻辑,...
以下是一个使用XDoclet插件生成Hibernate配置文件的例子: ```xml <path id="xdoclet.task.classpath"> ${xdoclet.home}/lib"> **/*.jar"/> ${xdoclet.home}/plugins"> **/*.jar"/> <taskdef name="...
- 注释被解析后,XDoclet会根据预定义的模板生成相应的文件,如Hibernate的.hbm.xml文件或EJB的ejb-jar.xml。 2. **XDoclet注解** - 在`XDocletSample`中,可以看到在类、接口和方法上使用了特定的XDoclet注解。...
在这个模板中,我们利用 xDoclet 来生成 Hibernate 的配置文件(如 HBM 文件)和 SQL 语句,以及 Spring 的配置文件(如 applicationContext.xml)。这样做的好处在于可以极大地提高开发效率,并减少出错的可能性。 ...