如何基于Hibernate在Java类中实现,根据数据库表生成持久化类代码和映射文件hbm.xml

如何基于Hibernate在Java类中实现,根据数据库表生成持久化类代码和映射文件hbm.xml我在网上找过一些方法,目前找到一个办法就是写一个ant脚本,然后再写一个... 如何基于Hibernate在Java类中实现,根据数据库表生成持久化类代码和映射文件hbm.xml
我在网上找过一些方法,目前找到一个办法就是写一个ant脚本,然后再写一个Java类去执行它,这样就可以生成代码和映射文件,这其中还用到了Hibernate的相关工具,请问还有没其他办法,因为我对Hibernate的工具完全不懂,如果没有其他更好的办法了,谁能给个ant脚本的Demo,最好能简单说明一下ant中使用到的标签的作用,感激不尽 T.T
你们大家可能都理解错我的意思了,我知道MyEclipse里面已经有反向工程这个功能了,而我刚刚好就想实现反向工程这个功能,换句话说,就是在我自己做的系统中,也能为用户提供反向工程这个功能?不知道我这样说大家理解否?
展开
 我来答
442017042
推荐于2016-11-05
知道答主
回答量:47
采纳率:0%
帮助的人:27.3万
展开全部
这个就要借助hibernate tools跟xdoclet来完成了;
首先你要在你的java代码里应用xdoclet标签,例如
Java code
private String name;

/**
* @hibernate.property column = "name" length = "50"
*/
public String getName() {
return this.name;
}

public void setName(String name) {
this.name = name;
}

其中,写到javadoc上的@hibernate.property column = "name" length = "50"
就是xdoclet标签,它需要xdoclet程序来处理,这里就需要用到hibernate tools。
具体做的话一般情况是建一个ant脚本来完成,例如:
XML code
<target name="hibernate-xdoclet" depends="init, init-xdoclet_hibernate"
description="Generate mapping documents">

<echo>+---------------------------------------------------+</echo>
<echo>| |</echo>
<echo>| R U N N I N G H I B E R N A T E D O C L E T |</echo>
<echo>| |</echo>
<echo>+---------------------------------------------------+</echo>

<delete>
<fileset dir="${hibernate.cfg.xml.dir}" includes="hibernate.cfg.xml" />
</delete>
<echo message="hibernate.cfg.xml at ${hibernate.cfg.xml.dir}"></echo>
<sleep seconds="1"/>

<hibernatedoclet
destdir="${hibernate.cfg.xml.dir}"
excludedtags="@version,@author,@todo,@see"
addedtags="@xdoclet-generated at ${TODAY},@copyright The XDoclet Team,@author XDoclet,@version ${version}"
force="false"
verbose="true">

<fileset dir="${src.dir}">
<include name="com/**/model/**/*.java"/>
</fileset>
<hibernatecfg
version="3.0"
destDir="${hibernate.cfg.xml.dir}"
dialect="org.hibernate.dialect.Oracle9Dialect"
driver="oracle.jdbc.driver.OracleDriver"
jdbcUrl="jdbc:oracle:thin:@localhost:1521:RESDL"
userName="test"
password="123"
showSql="true"
schema="true"
validateXML="true"
/>
<hibernate version="3.0"/>
</hibernatedoclet>

</target>
上面的代码是生成hbm跟cfg文件的,下面再介绍如何从java类到数据库:
XML code
<target name="hibernate-schema" depends="init, init-hibernate-schema"
description="Generate DB schema from the O/R mapping files">

<echo>+---------------------------------------------------+</echo>
<echo>| |</echo>
<echo>| R U N N I N G D B S C H E M A |</echo>
<echo>| |</echo>
<echo>+---------------------------------------------------+</echo>

<echo message="mysql.sql at etc/hbm2doc"></echo>
<sleep seconds="1"/>

<hibernatetool destdir="etc/hbm2doc">
<configuration propertyFile="${src.dir}/hibernate.properties">
<fileset dir="${hibernate.cfg.xml.dir}">
<include name="com/**/model/**/*.hbm.xml"/>
</fileset>
</configuration>
<hbm2ddl drop="true"
outputfilename="mysql.sql"/>
<hbm2doc/>
</hibernatetool>

</target>

当然ant工程里的一些初始化需要自己定义,我这里只摘录关键部分,具体的东西请查阅相关文档,hibernate tutorail里就有个例子
xautwuyi
2010-07-09 · TA获得超过404个赞
知道小有建树答主
回答量:570
采纳率:0%
帮助的人:364万
展开全部
没必要用ant脚本,MyEclipse对Hibernate支持得很好。
具体参照以下:

在hibernate中,每个数据表对应的其实是一个实体类,每个实体类有一个对应的hbm.xml配置文件和你匹配,myeclipse中其实有个MyEclipse Database Explorer视图,它提供了myeclipse与数据库直接连接的内置窗口,并且通过此窗口可以生成hibernate的mapping文件。

1.在项目上点击右键选择MyEclipse选项,为应用增加Hibernate特性.

2.在出现的配置窗口中,选中“Add Hibernate 2.1 libraries to project?”,然后设定存放Hibernate库文件的目录为: /WEB-INF/lib 目录,默认会选择创建一个新的Hibernate配置文件hibernate.cfg.xml。

3.点击下一步,进入Hibernate数据库连接配置界面,在Connection Profile选项中直接选择在MyEclipse Database Explorer中配置的vipdata选项,然后就会自动生成其他的配置,可以选择“Copy JDBC Driver and add to classpath”,这样就会将JDBC驱动拷贝到WEB-INF/lib目录中。:

4.点击下一步,来创建Hibernate的SessionFactory类,这是一个简单的集中管理Hibernate会话的工厂类,填写类的全名称。

5.点击完成,然后MyEclipse就会将Hibernate相关的jar包拷贝到lib目录下,同时会生成Hibernate的配置文件:hibernate.cfg.xml,和SessionFactory类。

现在要利用MyEclipse Database Explorer视图中的工具来生成Hibernate的映射文件。切换到MyEclipse Database Explorer视图,在表vipdata上点击右键,选择Create Hibernate Mapping.

6.配置生成的持久化类和映射文件。

7.点击Browse,选择生成的类和映射文件的包:com.xxx

8.ID Generator算法选项,选择native。(还有很多其他的选项可选,根据应用的需要具体选择,好像hibernate映射的表必须有主健,否则无法利用hibernate技术)。

9.点击完成,这样会生成持久化类Vipdata和它的父类AbstractVipdata(生成父类,有利于日后应用的扩展,工具会自动生成详细的equals方法和hashCode方法)以及映射文件xxx.hbm.xml。同时会修改Hibernate的配置文件hibernate.cfg.xml,会增加一行.

到此,hibernate mapping文件生成结束。:)

其实,eclipse对struts的支持也是很强大的,按照相似的步骤进行配置。很多的工作量就可以完全交给eclipse了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泥土中的露珠
2010-07-09 · TA获得超过2.7万个赞
知道小有建树答主
回答量:1136
采纳率:100%
帮助的人:483万
展开全部
就是根据db_table 生产 java类和映射文件是不?

简单:
假设你用netbeans或者Eclipse,(都差不多)
1,找到配置好的数据库,
2,打开数据库连接
3,选中需要生成的java文件的表
4,右键 --有生成hbm等字样,点一下就好咯

都是这样的,没必要用ant,省力省心……

选我哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vk...d@163.com
2010-07-18 · TA获得超过137个赞
知道答主
回答量:217
采纳率:0%
帮助的人:86.6万
展开全部
可能Hibernate不足以实现你的功能,不过可以用JDBC自己做,因为JDBC提供了各种API用以获取数据库的信息,我想ANT也是用JDBC实现的,就比如,
获取数据库的表的各种字段,类型等,我想Hibernate似乎做不到这个,而JDBC可以
不知道我这样说你理解否?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhao103804
2010-07-09
知道答主
回答量:55
采纳率:0%
帮助的人:26.7万
展开全部
这个很简单啊,用My Eclipse 里的那个MyEclipse Database Explorer 就可以实现反向生成了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式