Ant+XDoclet生成hbm文件

https://github.com/darknessitachi/xdocletHibernate

这次我们用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文件就自动生成了。
 

转载于:https://my.oschina.net/darkness/blog/802780

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值