在Myeclipse中使用xdoclet生成映射文件及hibernate所有注解全
在MyEclipse中利用XDoclet自动生成Hibernate配置和映射文件
在使用Hibernate框架时,如果实体类一多,在映射文件中需要配置的映射就会增多,如果手工做的话,经常会出现写错的情况,利用XDoclet工具可以自动地生成映射文件和配置文件,只要注解写正确了几乎避免了出错的可能。
XDoclet基于ant,先要下解压ant,配置好ant的环境变量才能使用XDoclet。在ant已经配置好后,下载XDoclet-pliugins-1.03.zip包,解压到某个目录即可使用(这里解压到D:\)
在MyEclipse中使用XDoclet的基本步骤:
1、建立ant脚本build.xml
<?xmlversion="1.0"encoding="GBK"?>
<projectname="XdocletTest系统构建脚本"default="生成Hibernate配置文件"basedir=".">
<propertyname="src.dir"value="${basedir}/src"/>
<propertyname="xdoclet.home"value="D:/xdoclet-plugins-1.0.3"/>
<!--Buildclasspath-->
<pathid="xdoclet.task.classpath">
<filesetdir="${xdoclet.home}/lib">
<includename="**/*.jar"/>
</fileset>
<filesetdir="${xdoclet.home}/plugins">
<includename="**/*.jar"/>
</fileset>
</path>
<taskdef
name="xdoclet"
classname="org.xdoclet.ant.XDocletTask"
classpathref="xdoclet.task.classpath"
/>
<targetname="生成Hibernate配置文件">
<xdoclet>
<filesetdir="${src.dir}/org/zc/xdoclet/model">
<includename="**/*.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>
<targetname="生成hibernate映射文件">
<xdoclet>
<filesetdir="${src.dir}/org/zc/xdoclet/model">
<includename="**/*.java"/>
</fileset>
<component
classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin"
version="3.0"
destdir="${src.dir}"
/>
</xdoclet>
</target>
</project>
说明:
注释<!--Buildclasspath-->以上的脚本意图在找到xdoclet的目录,
注释以下的内容主要做了以下三件事:
①找到并导入xdoclet下的所有jar包;
②自定义脚本生成Hibernate配置文件hibernate.cfg.xml,这里定义了数据库方言及一些常用的属性;
③自定义脚本生成Hibernate映射文件,根据已经写好了的含有xdoclet注解的java实体类自动生成映射文件。
2、定义实体类并写注解。
实体类User.java
packageorg.zc.xdoclet.model;
/**
*@authorpouger
*@hibernate.classtable="t_user"
*/
publicclassUser{
privateintid;
privateStringname;
privateStringpassword;
privateGroupgroup;
/**
*@hibernate.id
*generator-class="native"
*/
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
/**
*@hibernate.property
*/
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
/**
*@hibernate.property
*/
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
/**
*@hibernate.many-to-one
*/
publicGroupgetGroup(){
returngroup;
}
publicvoidsetGroup(Groupgroup){
this.group=group;
}
}
实体类Group.java
packageorg.zc.xdoclet.model;
/**
*@authorpouger
*@hibernate.classtable="t_group"
*/
publicclassGroup{
privateintid;
privateStringname;
/**
*@hibernate.id
*generator-class="native"
*/
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
/**
*@hibernate.property
*/
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}
说明:
实体类中的注解(如@hibernate.property)用来标明映射文件的属性配置,包括生成的数据库表的名字、主键的生成方式、是否启用hbm2ddl、对象间的对应关系等。如果想要指定对象在数据库表中的字段值和类型,只需在实体类的注解中声明即可。
3、在MyEclipse中利用XDoclet自动生成Hibernate配置文件和映射文件
①在MyEclipse中加入XDoclet---
右击项目,依次打开properties>>MyEclipse>>XDoclet>>AddStandard…,选中StandardHibernate,点击OK即可加入XDoclet
②自动生成Hibernate配置文件和映射文件---
右击项目,点击MyEclipse>>RunXDoclet,即可生成配置文件和映射文件。
附hibernate所有注解标签,详细请查看:http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html,以供日后查看:
@hibernateTagReference
TagsfordeclarationofHibernatedescriptorfile
Appliesto:Allclasses,atclasslevelandongettermethods
@hibernateClassLevelTags
@hibernate.cache
@hibernate.class
@hibernate.discriminator
@hibernate.jcs-cache
@hibernate.joined-subclass
@hibernate.joined-subclass-key
@hibernate.mapping
@hibernate.query
@hibernate.subclass
@hibernateMethodLevelTags
@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
@hibernateFieldLevelTags