在MyEclipse中利用XDoclet自动生成Hibernate配置和映射文件
在使用Hibernate框架时,如果实体类一多,在映射文件中需要配置的映射就会增多,如果手工做的话,经常会出现写错的情况,利用XDoclet工具可以自动地生成映射文件和配置文件,只要注解写正确了几乎避免了出错的可能。
XDoclet基于ant,先要下解压ant,配置好ant的环境变量才能使用XDoclet。在ant已经配置好后,下载XDoclet-pliugins-1.03.zip包,解压到某个目录即可使用(这里解压到D:\)
在MyEclipse中使用XDoclet的基本步骤:
1、 建立ant脚本build.xml
<?xml version="1.0" encoding="GBK"?>
<project name="XdocletTest系统构建脚本" default="生成Hibernate配置文件" basedir=".">
<property name="src.dir" value="${basedir}/src"/>
<property name="xdoclet.home" value="D:/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}/org/zc/xdoclet/model">
<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/xdoclettest"
jdbcdriver="com.mysql.jdbc.Driver"
jdbcusername="root"
jdbcpassword="root"
dialect="org.hibernate.dialect.MySQLDialect"
showsql="true"
/>
</xdoclet>
</target>
<target name="生成hibernate映射文件">
<xdoclet>
<fileset dir="${src.dir}/org/zc/xdoclet/model">
<include name="**/*.java"/>
</fileset>
<component
classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin"
version="3.0"
destdir="${src.dir}"
/>
</xdoclet>
</target>
</project>
说明:
注释<!-- Build classpath -->以上的脚本意图在找到xdoclet的目录,
注释以下的内容主要做了以下三件事:
① 找到并导入xdoclet下的所有jar包;
② 自定义脚本生成Hibernate配置文件hibernate.cfg.xml ,这里定义了数据库方言及一些常用的属性;
③ 自定义脚本生成Hibernate映射文件,根据已经写好了的含有xdoclet注解的java实体类自动生成映射文件。
2、 定义实体类并写注解。
实体类User.java
package org.zc.xdoclet.model;
/**
* @author pouger
* @hibernate.class table="t_user"
*/
public class User {
private int id;
private String name;
private String password;
private Group group;
/**
* @hibernate.id
* generator-class="native"
*/
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
/**
*@hibernate.property
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
*@hibernate.property
*/
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
/**
*@hibernate.many-to-one
*/
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
}
实体类Group.java
package org.zc.xdoclet.model;
/**
* @author pouger
* @hibernate.class table="t_group"
*/
public class Group {
private int id;
private String name;
/**
* @hibernate.id
* generator-class="native"
*/
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
/**
* @hibernate.property
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
说明:
实体类中的注解(如@hibernate.property)用来标明映射文件的属性配置,包括生成的数据库表的名字、主键的生成方式、是否启用hbm2ddl、对象间的对应关系等。如果想要指定对象在数据库表中的字段值和类型,只需在实体类的注解中声明即可。
3、 在MyEclipse中利用XDoclet自动生成Hibernate配置文件和映射文件
① 在MyEclipse中加入XDoclet---
右击项目,依次打开properties >> MyEclipse >> XDoclet >> Add Standard… ,选中Standard Hibernate ,点击OK即可加入XDoclet
② 自动生成Hibernate配置文件和映射文件---
右击项目,点击MyEclipse >> Run XDoclet ,即可生成配置文件和映射文件。
附hibernate所有注解标签,详细请查看:http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html,以供日后查看:
@hibernate Tag Reference
Tags for declaration of Hibernate descriptor file
Applies to: All classes, at class level and on getter methods
@hibernate Class Level Tags
@hibernate.cache
@hibernate.class
@hibernate.discriminator
@hibernate.jcs-cache
@hibernate.joined-subclass
@hibernate.joined-subclass-key
@hibernate.mapping
@hibernate.query
@hibernate.subclass
@hibernate Method Level Tags
@hibernate.any
@hibernate.any-column
@hibernate.array
@hibernate.bag
@hibernate.collection-cache
@hibernate.collection-composite-element
@hibernate.collection-element
@hibernate.collection-index
@hibernate.collection-jcs-cache
@hibernate.collection-key
@hibernate.collection-key-column
@hibernate.collection-many-to-many
@hibernate.collection-one-to-many
@hibernate.column
@hibernate.component
@hibernate.generator-param
@hibernate.id
@hibernate.index-many-to-many
@hibernate.list
@hibernate.many-to-any
@hibernate.many-to-any-column
@hibernate.many-to-one
@hibernate.map
@hibernate.one-to-one
@hibernate.parent
@hibernate.primitive-array
@hibernate.property
@hibernate.set
@hibernate.timestamp
@hibernate.version
@hibernate Field Level Tags