Ant+XDoclet生成hbm文件

本文介绍如何利用XDoclet工具自动生成Hibernate配置文件及映射文件,提高开发效率并确保代码与映射文件的一致性。
这次我们用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文件就自动生成了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值