【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.java
  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}

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,并运行其两个功能项,刷新项目目录





刷新项目目录后的项目目录结构如下:

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.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_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.xml
 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>
以上代码语法请自行查找资料学习,在此不作详细介绍。

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/

posted on 2009-04-13 15:19 intrl 阅读(3715) 评论(13)  编辑 收藏 引用 所属分类: JavaANTXdoclet

评论

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-09-10 09:16 hhh

照着做也成功啦。我做了你这里的三个实例,全部运行成功。你太了不起了。

谢谢啦。。。  回复  更多评论   

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-09-10 09:38 xinlingdeqihang

生成文件是成功了,但是数据库中没有建表。而且貌似导出的*.hbm.xml文件中有个access=“field” 好像生成表时不支持。  回复  更多评论   

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-09-10 10:33 intrl

请确定hibernate.cfg.xml配置文件中数据库的连接参数是正确的(根据自己的实际情况配置)。
启动Tomcat之前要确保所要使用得数据库是存在的,入本实例中得“test”数据库。
@xinlingdeqihang
  回复  更多评论   

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-10-14 08:55 rongzhenhua

@xinlingdeqihang
我也遇到了同样的情况,请问是怎么解决啊  回复  更多评论   

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-10-14 13:14 intrl

要启动Tomcat才会建表
@rongzhenhua
  回复  更多评论   

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-12-14 10:51 windforce

生成hibernate映射文件----为什么我运行时候这个target没有生成model对应的hbm啊
配置文件倒是生成了 谁知道为什么呀  回复  更多评论   

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-12-14 10:53 windforce

数据库表也没有生成 我郁闷啊 谁能告诉我为什么啊 根本就没走那个<xdoclet>节点就结束了...  回复  更多评论   

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-12-14 10:56 windforce

谁能帮我看看啊 ~~~配置文件生成了 hbm文件没生成
<?xml version="1.0" encoding="UTF-8"?>
<project name="test系统构建脚本" default="生成Hibernate配置文件" basedir=".">

<property name="src.dir" value="${basedir}/src"/>
<property name="xdoclet.home" value="D:/xdoclet-plugins-dist-1.0.4"/>

<!-- build classpath -->
<path id="xdoclet.task.classpath">
<fileset dir="${xdoclet.home}/lib">
<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}/com/techson/model">
<include name="**/*.java"/>
</fileset>
<component
classname="org.xdoclet.plugin.hibernate.HibernateConfigPlugin"
destdir="${src.dir}"
version="3.0"
hbm2ddlauto="update"
jdbcurl="jdbc:oracle:thin:@192.168.1.6:1521:portal"
jdbcdriver="oracle.jdbc.driver.OracleDriver"
jdbcusername="system"
jdbcpassword="password"
dialect="org.hibernate.dialect.Oracle9iDialect"
showsql="true"
/>
</xdoclet>
</target>

<target name="生成hibernate映射文件">
<xdoclet>
<fileset dir="${src.dir}/com/techson/model">
<include name="**/*.java"/>
</fileset>
<component
classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin"
version="3.0"
destdir="${src.dir}"
/>
</xdoclet>
</target>

</project>  回复  更多评论   

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-12-15 08:45 学习ing

我按照上面的内容到运行项目那里,只生成Group.hbm.xml和hibernate.cfg.xml这两个文件,请问楼主是怎么回事呢?  回复  更多评论   

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-12-15 11:00 intrl

在这个例子中,运行target任务只能生成映射文件和配置文件,解决了手动书写的麻烦,要生成数据库就必须部署到tomcat上,请参考【Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架 整合开发 】@windforce
  回复  更多评论   

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-12-15 11:09 intrl

/**
*
* @author Administrator
*@hibernate.class table="t_group"
*/


以上这段示例即为配置生成hbm的XDoclet注释代码,检查下你model下的类


@windforce
  回复  更多评论   

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-12-15 11:10 intrl

Group的hbm生成了,而User的没生成,估计你在User类的前面掉了
类似:
/**
*
* @author Administrator
*@hibernate.class table="t_group"
*/

这样的代码了吧
@学习ing
  回复  更多评论   

# re: 【Java EE】ANT+Xdoclet自动生成Hibernate配置文件 2009-12-15 12:03 学习ing

经解决了,应该是代码打错了,我照上面的User.java又重打了一遍,这次好用了,谢谢啦~~!!!有问题再向你求教啊!!!  回复  更多评论   

只有注册用户登录后才能发表评论。
<2011年5月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

随笔分类(55)

随笔档案(34)

网址收藏

资源下载

随笔导航

搜索

最新评论

阅读排行榜

评论排行榜