如何基于Hibernate在Java类中实现,根据数据库表生成持久化类代码和映射文件hbm.xml
如何基于Hibernate在Java类中实现,根据数据库表生成持久化类代码和映射文件hbm.xml我在网上找过一些方法,目前找到一个办法就是写一个ant脚本,然后再写一个...
如何基于Hibernate在Java类中实现,根据数据库表生成持久化类代码和映射文件hbm.xml
我在网上找过一些方法,目前找到一个办法就是写一个ant脚本,然后再写一个Java类去执行它,这样就可以生成代码和映射文件,这其中还用到了Hibernate的相关工具,请问还有没其他办法,因为我对Hibernate的工具完全不懂,如果没有其他更好的办法了,谁能给个ant脚本的Demo,最好能简单说明一下ant中使用到的标签的作用,感激不尽 T.T
你们大家可能都理解错我的意思了,我知道MyEclipse里面已经有反向工程这个功能了,而我刚刚好就想实现反向工程这个功能,换句话说,就是在我自己做的系统中,也能为用户提供反向工程这个功能?不知道我这样说大家理解否? 展开
我在网上找过一些方法,目前找到一个办法就是写一个ant脚本,然后再写一个Java类去执行它,这样就可以生成代码和映射文件,这其中还用到了Hibernate的相关工具,请问还有没其他办法,因为我对Hibernate的工具完全不懂,如果没有其他更好的办法了,谁能给个ant脚本的Demo,最好能简单说明一下ant中使用到的标签的作用,感激不尽 T.T
你们大家可能都理解错我的意思了,我知道MyEclipse里面已经有反向工程这个功能了,而我刚刚好就想实现反向工程这个功能,换句话说,就是在我自己做的系统中,也能为用户提供反向工程这个功能?不知道我这样说大家理解否? 展开
7个回答
展开全部
这个就要借助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里就有个例子
首先你要在你的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里就有个例子
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
没必要用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了
具体参照以下:
在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了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是根据db_table 生产 java类和映射文件是不?
简单:
假设你用netbeans或者Eclipse,(都差不多)
1,找到配置好的数据库,
2,打开数据库连接
3,选中需要生成的java文件的表
4,右键 --有生成hbm等字样,点一下就好咯
都是这样的,没必要用ant,省力省心……
选我哦
简单:
假设你用netbeans或者Eclipse,(都差不多)
1,找到配置好的数据库,
2,打开数据库连接
3,选中需要生成的java文件的表
4,右键 --有生成hbm等字样,点一下就好咯
都是这样的,没必要用ant,省力省心……
选我哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可能Hibernate不足以实现你的功能,不过可以用JDBC自己做,因为JDBC提供了各种API用以获取数据库的信息,我想ANT也是用JDBC实现的,就比如,
获取数据库的表的各种字段,类型等,我想Hibernate似乎做不到这个,而JDBC可以
不知道我这样说你理解否?
获取数据库的表的各种字段,类型等,我想Hibernate似乎做不到这个,而JDBC可以
不知道我这样说你理解否?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个很简单啊,用My Eclipse 里的那个MyEclipse Database Explorer 就可以实现反向生成了啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询