【Java EE】ANT+Xdoclet自动生成Hibernate配置文件
1、下载Xdoclet,网址:http://xdoclet.sourceforge.net/,解压2、新建包com.test.model,存放实体类Group,User
Group.java
1package com.test.model;
2
3import java.util.Set;
4
5/**
6 *
7 * @author Administrator
8 *@hibernate.class table="t_group"
9 */
10public class Group {
11 /**
12 * @hibernate.id
13 * generator-class="native"
14 */
15 private int groupid;
16 /**
17 * @hibernate.property
18 */
19 private String groupname;
20 /**
21 * @hibernate.property
22 */
23 private String remark;
24
25 /**
26 * @hibernate.set
27 * inverse="true"
28 * @hibernate.key column="groupid"
29 * @hibernate.one-to-many
30 * class="com.test.model.User"
31 */
32 private Set<User> users;
33 public int getGroupid() {
34 return groupid;
35 }
36
37 public void setGroupid(int groupid) {
38 this.groupid = groupid;
39 }
40
41 public String getGroupname() {
42 return groupname;
43 }
44
45 public void setGroupname(String groupname) {
46 this.groupname = groupname;
47 }
48
49 public String getRemark() {
50 return remark;
51 }
52
53 public void setRemark(String remark) {
54 this.remark = remark;
55 }
56
57 public Set<User> getUsers() {
58 return users;
59 }
60
61 public void setUsers(Set<User> users) {
62 this.users = users;
63 }
64
65}
User.java2
3import java.util.Set;
4
5/**
6 *
7 * @author Administrator
8 *@hibernate.class table="t_group"
9 */
10public class Group {
11 /**
12 * @hibernate.id
13 * generator-class="native"
14 */
15 private int groupid;
16 /**
17 * @hibernate.property
18 */
19 private String groupname;
20 /**
21 * @hibernate.property
22 */
23 private String remark;
24
25 /**
26 * @hibernate.set
27 * inverse="true"
28 * @hibernate.key column="groupid"
29 * @hibernate.one-to-many
30 * class="com.test.model.User"
31 */
32 private Set<User> users;
33 public int getGroupid() {
34 return groupid;
35 }
36
37 public void setGroupid(int groupid) {
38 this.groupid = groupid;
39 }
40
41 public String getGroupname() {
42 return groupname;
43 }
44
45 public void setGroupname(String groupname) {
46 this.groupname = groupname;
47 }
48
49 public String getRemark() {
50 return remark;
51 }
52
53 public void setRemark(String remark) {
54 this.remark = remark;
55 }
56
57 public Set<User> getUsers() {
58 return users;
59 }
60
61 public void setUsers(Set<User> users) {
62 this.users = users;
63 }
64
65}
1package com.test.model;
2
3import java.util.Date;
4
5/**
6 *
7 * @author Administrator
8 *@hibernate.class table="t_user"
9 */
10public class User {
11 /**
12 * @hibernate.id
13 * generator-class="native"
14 */
15 private int userid;
16 /**
17 * @hibernate.property
18 */
19 private String username;
20 /**
21 * @hibernate.many-to-one
22 * column="groupid"
23 * cascade="all"
24 * class="com.test.model.Group"
25 */
26 private Group group;
27 /**
28 * @hibernate.property
29 */
30 private String password;
31 /**
32 * @hibernate.property
33 */
34 private String email;
35 /**
36 * @hibernate.property
37 */
38 private String question;
39 /**
40 * @hibernate.property
41 */
42 private String answer;
43 /**
44 * @hibernate.property
45 */
46 private Date createtime;
47 /**
48 * @hibernate.property
49 */
50 private int status;
51
52 public String getEmail() {
53 return email;
54 }
55
56 public void setEmail(String email) {
57 this.email = email;
58 }
59
60 public String getQuestion() {
61 return question;
62 }
63
64 public void setQuestion(String question) {
65 this.question = question;
66 }
67
68 public String getAnswer() {
69 return answer;
70 }
71
72 public void setAnswer(String answer) {
73 this.answer = answer;
74 }
75
76 public Date getCreatetime() {
77 return createtime;
78 }
79
80 public void setCreatetime(Date createtime) {
81 this.createtime = createtime;
82 }
83
84 public int getStatus() {
85 return status;
86 }
87
88 public void setStatus(int status) {
89 this.status = status;
90 }
91
92 public int getUserid() {
93 return userid;
94 }
95
96 public void setUserid(int userid) {
97 this.userid = userid;
98 }
99
100 public String getUsername() {
101 return username;
102 }
103
104 public void setUsername(String username) {
105 this.username = username;
106 }
107
108 public String getPassword() {
109 return password;
110 }
111
112 public void setPassword(String password) {
113 this.password = password;
114 }
115
116 public Group getGroup() {
117 return group;
118 }
119
120 public void setGroup(Group group) {
121 this.group = group;
122 }
123
124
125}
2
3import java.util.Date;
4
5/**
6 *
7 * @author Administrator
8 *@hibernate.class table="t_user"
9 */
10public class User {
11 /**
12 * @hibernate.id
13 * generator-class="native"
14 */
15 private int userid;
16 /**
17 * @hibernate.property
18 */
19 private String username;
20 /**
21 * @hibernate.many-to-one
22 * column="groupid"
23 * cascade="all"
24 * class="com.test.model.Group"
25 */
26 private Group group;
27 /**
28 * @hibernate.property
29 */
30 private String password;
31 /**
32 * @hibernate.property
33 */
34 private String email;
35 /**
36 * @hibernate.property
37 */
38 private String question;
39 /**
40 * @hibernate.property
41 */
42 private String answer;
43 /**
44 * @hibernate.property
45 */
46 private Date createtime;
47 /**
48 * @hibernate.property
49 */
50 private int status;
51
52 public String getEmail() {
53 return email;
54 }
55
56 public void setEmail(String email) {
57 this.email = email;
58 }
59
60 public String getQuestion() {
61 return question;
62 }
63
64 public void setQuestion(String question) {
65 this.question = question;
66 }
67
68 public String getAnswer() {
69 return answer;
70 }
71
72 public void setAnswer(String answer) {
73 this.answer = answer;
74 }
75
76 public Date getCreatetime() {
77 return createtime;
78 }
79
80 public void setCreatetime(Date createtime) {
81 this.createtime = createtime;
82 }
83
84 public int getStatus() {
85 return status;
86 }
87
88 public void setStatus(int status) {
89 this.status = status;
90 }
91
92 public int getUserid() {
93 return userid;
94 }
95
96 public void setUserid(int userid) {
97 this.userid = userid;
98 }
99
100 public String getUsername() {
101 return username;
102 }
103
104 public void setUsername(String username) {
105 this.username = username;
106 }
107
108 public String getPassword() {
109 return password;
110 }
111
112 public void setPassword(String password) {
113 this.password = password;
114 }
115
116 public Group getGroup() {
117 return group;
118 }
119
120 public void setGroup(Group group) {
121 this.group = group;
122 }
123
124
125}
3、在test目录下建立build.xml,其中 <property name="xdoclet.home" value="C:/xdoclet-plugins-dist-1.0.4"/>为你所解压的xdoclet目录。
1<?xml version="1.0" encoding="GBK"?>
2<project name="test系统构建脚本" default="生成Hibernate配置文件" basedir=".">
3
4 <property name="src.dir" value="${basedir}/src"/>
5 <property name="xdoclet.home" value="C:/xdoclet-plugins-dist-1.0.4"/>
6
7 <!-- build classpath -->
8 <path id="xdoclet.task.classpath">
9 <fileset dir="${xdoclet.home}/lib">
10 <include name="**/*.jar"/>
11 </fileset>
12 </path>
13
14 <taskdef
15 name="xdoclet"
16 classname="org.xdoclet.ant.XDocletTask"
17 classpathref="xdoclet.task.classpath"
18 />
19
20 <target name="生成Hibernate配置文件">
21 <xdoclet>
22 <fileset dir="${src.dir}/com/test/model">
23 <include name="**/*.java"/>
24 </fileset>
25 <component
26 classname="org.xdoclet.plugin.hibernate.HibernateConfigPlugin"
27 destdir="${src.dir}"
28 version="3.0"
29 hbm2ddlauto="update"
30 jdbcurl="jdbc:mysql://localhost/test"
31 jdbcdriver="com.mysql.jdbc.Driver"
32 jdbcusername="root"
33 jdbcpassword="intrl"
34 dialect="org.hibernate.dialect.MySQLDialect"
35 showsql="true"
36 />
37 </xdoclet>
38 </target>
39
40 <target name="生成hibernate映射文件">
41 <xdoclet>
42 <fileset dir="${src.dir}/com/test/model">
43 <include name="**/*.java"/>
44 </fileset>
45 <component
46 classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin"
47 version="3.0"
48 destdir="${src.dir}"
49 />
50 </xdoclet>
51 </target>
52
53</project>
4、在MyEclipse中配置ANT,添加刚才所建立的build.xml,并运行其两个功能项,刷新项目目录2<project name="test系统构建脚本" default="生成Hibernate配置文件" basedir=".">
3
4 <property name="src.dir" value="${basedir}/src"/>
5 <property name="xdoclet.home" value="C:/xdoclet-plugins-dist-1.0.4"/>
6
7 <!-- build classpath -->
8 <path id="xdoclet.task.classpath">
9 <fileset dir="${xdoclet.home}/lib">
10 <include name="**/*.jar"/>
11 </fileset>
12 </path>
13
14 <taskdef
15 name="xdoclet"
16 classname="org.xdoclet.ant.XDocletTask"
17 classpathref="xdoclet.task.classpath"
18 />
19
20 <target name="生成Hibernate配置文件">
21 <xdoclet>
22 <fileset dir="${src.dir}/com/test/model">
23 <include name="**/*.java"/>
24 </fileset>
25 <component
26 classname="org.xdoclet.plugin.hibernate.HibernateConfigPlugin"
27 destdir="${src.dir}"
28 version="3.0"
29 hbm2ddlauto="update"
30 jdbcurl="jdbc:mysql://localhost/test"
31 jdbcdriver="com.mysql.jdbc.Driver"
32 jdbcusername="root"
33 jdbcpassword="intrl"
34 dialect="org.hibernate.dialect.MySQLDialect"
35 showsql="true"
36 />
37 </xdoclet>
38 </target>
39
40 <target name="生成hibernate映射文件">
41 <xdoclet>
42 <fileset dir="${src.dir}/com/test/model">
43 <include name="**/*.java"/>
44 </fileset>
45 <component
46 classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin"
47 version="3.0"
48 destdir="${src.dir}"
49 />
50 </xdoclet>
51 </target>
52
53</project>
刷新项目目录后的项目目录结构如下:
Group.hbm.xml
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
3
4<hibernate-mapping>
5 <class table="t_group" name="com.test.model.Group">
6 <id access="field" name="groupid">
7 <generator class="native"/>
8 </id>
9 <property name="groupname" access="field"/>
10 <property name="remark" access="field"/>
11 <set inverse="true" access="field" name="users">
12 <key column="groupid"/>
13 <one-to-many class="com.test.model.User"/>
14 </set>
15 </class>
16</hibernate-mapping>
User.hbm.xml2<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
3
4<hibernate-mapping>
5 <class table="t_group" name="com.test.model.Group">
6 <id access="field" name="groupid">
7 <generator class="native"/>
8 </id>
9 <property name="groupname" access="field"/>
10 <property name="remark" access="field"/>
11 <set inverse="true" access="field" name="users">
12 <key column="groupid"/>
13 <one-to-many class="com.test.model.User"/>
14 </set>
15 </class>
16</hibernate-mapping>
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
3
4<hibernate-mapping>
5 <class table="t_user" name="com.test.model.User">
6 <id access="field" name="userid">
7 <generator class="native"/>
8 </id>
9 <property name="username" access="field"/>
10 <many-to-one column="groupid" cascade="all" access="field" class="com.test.model.Group" name="group"/>
11 <property name="password" access="field"/>
12 <property name="email" access="field"/>
13 <property name="question" access="field"/>
14 <property name="answer" access="field"/>
15 <property name="createtime" access="field"/>
16 <property name="status" access="field"/>
17 </class>
18</hibernate-mapping>
hibernate.cfg.xml2<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
3
4<hibernate-mapping>
5 <class table="t_user" name="com.test.model.User">
6 <id access="field" name="userid">
7 <generator class="native"/>
8 </id>
9 <property name="username" access="field"/>
10 <many-to-one column="groupid" cascade="all" access="field" class="com.test.model.Group" name="group"/>
11 <property name="password" access="field"/>
12 <property name="email" access="field"/>
13 <property name="question" access="field"/>
14 <property name="answer" access="field"/>
15 <property name="createtime" access="field"/>
16 <property name="status" access="field"/>
17 </class>
18</hibernate-mapping>
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
3
4<hibernate-configuration>
5 <session-factory>
6 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
7 <property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
8 <property name="hibernate.connection.username">root</property>
9 <property name="hibernate.connection.password">intrl</property>
10 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
11 <property name="hibernate.show_sql">true</property>
12 <property name="hibernate.hbm2ddl.auto">update</property>
13 <mapping resource="com/test/model/Group.hbm.xml"/>
14 <mapping resource="com/test/model/User.hbm.xml"/>
15 </session-factory>
16</hibernate-configuration>
以上代码语法请自行查找资料学习,在此不作详细介绍。2<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
3
4<hibernate-configuration>
5 <session-factory>
6 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
7 <property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
8 <property name="hibernate.connection.username">root</property>
9 <property name="hibernate.connection.password">intrl</property>
10 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
11 <property name="hibernate.show_sql">true</property>
12 <property name="hibernate.hbm2ddl.auto">update</property>
13 <mapping resource="com/test/model/Group.hbm.xml"/>
14 <mapping resource="com/test/model/User.hbm.xml"/>
15 </session-factory>
16</hibernate-configuration>
5、资源下载
xdoclet-plugins-dist-1.0.4-bin.zip:http://www.rayfile.com/files/f8462580-66f2-11de-8a67-0014221b798a/
apache-ant-1.7.1-bin.zip:http://www.rayfile.com/files/78e4fa6e-66b6-11de-8110-0014221b798a/
相关推荐
本篇文章将详细介绍如何使用Ant和XDoclet来生成Hibernate的HBM(Hibernate Mapping)文件。 首先,Ant是一个基于Java的构建工具,它允许开发者通过XML配置文件来定义构建过程,包括编译、打包、测试等任务。Ant的...
XDoclet则在Javadoc注释的基础上,根据预设的模板自动生成Hibernate所需的配置文件和实体类,大大减少了手动编写这些文件的工作量。 在实际开发中,这个组合的使用可以显著提高开发效率,减少重复劳动,尤其是对于...
**XDoclet** 是一个文档生成和代码生成工具,它可以自动根据Java源代码中的特定注解生成各种配置文件,如Hibernate的映射文件、EJB的部署描述符等。这减少了手动维护配置文件的工作量,提高了开发效率。 **Ant** 是...
为了生成Hibernate配置文件,我们需要编写一个Ant脚本来调用Xdoclet。这里是一个简单的示例脚本: ```xml <property name="doclet.dir" value="target/xdoclet"/> ${src.dir}" includes="**/*.class"/> $...
在Java类中,我们只需要添加适当的Javadoc注释,Xdoclet就会根据这些注释生成对应的.hbm.xml映射文件和Hibernate配置文件。而Ant则负责编译源代码、运行Xdoclet以及执行其他构建任务。 具体步骤如下: 1. **设置...
这种机制使得开发者能够在不离开 Java 代码的情况下,方便地指定所需的额外元数据,从而自动化生成配置文件等文档。 XDoclet 的核心思想是在 Java 代码中加入特定的 Javadoc 标签,例如 `@hibernate.class`、`@...
XDoclet是一款强大的Java代码生成工具,它通过解析Java源代码中的特定注解(annotations),自动生成各种元数据,如EJB组件接口、Hibernate映射文件、Struts配置文件等。XDoclet 1.2是该工具的一个版本,带来了许多...
为了解决这一问题,XDoclet应运而生,它是一款自动化工具,能够根据Java源代码自动生成Hibernate所需的映射文件和SQL语句。 XDoclet是基于Javadoc的元数据处理工具,它通过读取Java源代码中的特定注解,自动生成...
* 自动生成配置文件:Xdoclet 可以根据 Java 代码生成对应的配置文件,减少手动编写配置文件的工作量。 * 提高开发效率:Xdoclet 可以自动化生成配置文件,提高开发效率和质量。 * 简化项目维护:Xdoclet 可以简化...
Xdoclet则是Java中用于自动生成代码和部署描述符的工具,它通过解析源代码中的特定注解(Javadoc标签),生成对应的Struts配置文件、Hibernate映射文件或EJB组件代码。这大大减少了手动编写这些文件的工作量,使...
XDoclet是一个基于JavaDoc的代码生成工具,它可以自动根据Java源代码中的特定注解生成如EJB接口、Hibernate映射文件、Spring配置文件等。在本示例中,XDoclet可能被用来自动生成Spring配置和Web服务相关的接口及实现...
请把这个文件解压后方到一个盘下面.在build.xml中的 <property name="xdoclet.home" value="D:/jarpackage/xdoclet-plugins-1.0.3"/> 指出这个文件存放的位置....在构建域对象的时候一定要指明在配置文件中的配置信息..
XDoclet 是一款强大的Java注解处理工具,它允许开发者在Java源代码中添加元数据,这些元数据可以用来自动生成各种配置文件,包括Hibernate的映射文件(hbm.xml)。这种方式极大地提高了开发效率,避免了手动创建和...
在“XDoclet插件包以及从Java持久化类生成hibernate mapping小例子”中,我们重点关注的是如何通过XDoclet从Java持久化类生成与Hibernate相关的配置文件。首先,我们需要在Java类中添加特定的XDoclet注解,这些注解...
为了解决这一问题,Xdoclet应运而生,它是一种基于Javadoc注解的工具,能够自动生成Hibernate所需的*.hbm.xml映射文件,极大地提高了开发效率。 一、Xdoclet概述 Xdoclet是一个强大的Javadoc扩展工具,它通过解析...
* 自动生成代码和配置文件 * 支持 Java 代码结构的解析和理解 * 支持 Apache Ant 集成 * 支持模板生成和自定义标签 * 支持生成部署描述符和源代码 XDoclet 的应用场景包括: * 自动生成 EJB 的部署描述符 * 自动...
而Xdoclet则是用于自动生成Java源代码和配置文件的工具,它能够根据注释自动创建Hibernate所需的XML配置文件,比如`hibernate.cfg.xml`和`*.hbm.xml`。在早期,Xdoclet广泛用于简化Hibernate项目,避免手动编写大量...
**XDoclet** 是一个文档生成工具,它可以基于Javadoc注释自动生成代码文档或其他类型的元数据,如XML配置文件。 ### 六、视频教程内容概述 根据提供的部分内容列表可以看出,这套视频教程覆盖了从基础的框架介绍到...
XDoclet提供了多种目标,如`xdoclet-ejb-jar`用于生成EJB相关的文件,`xdoclet-hibernate`用于生成Hibernate相关的文件。配置完成后,执行Ant构建时,XDoclet会自动运行并生成所需的元数据文件。 总结,XDoclet API...
- **Ant build文件**:编写Ant脚本以自动化生成映射文件及数据表。需将所需的JAR包放置在`WebRoot/WEB-INF/lib/`目录下。 - **执行命令**:在命令行中运行Ant脚本,完成映射文件和数据表的生成。 ##### 4. 反身关联...