在SSH整合开发中,Hibernate建立映射关系可以有两种形式:一种是对象模型 -->关系模型,另一种是关系模型-->映射模型。第一种先建立domain对象,然后通过*.hbm.xml进行映射生成数据库表。第二种是先建立数据库表,然后通过逆向工程的方式,逆向生成domain对象和*.hbm.xml文件。
在Myeclipse中,正逆向工程操作比较简单,而如果是Eclipse的话,会比较麻烦,因为必须要先配置下Hibernate环境(同理如果要生成其他持久化层框架的实体类,也需要先配置)。
有关Eclipse配置Hibernate环境的方法这里就不叙述了,上网搜吧,我给提供个参考链接:
http://hi.baidu.com/java513/blog/item/6be18a3c5d79daf43c6d9742.html
那么下面讲述正题:如何从数据库逆向生成Hibernate实体类和*.hbm.xml文件
首先说明一下:此处使用的Hibernate4.0,Eclipse版本为Mars.1 Release (4.5.1)
一、首先,要在Eclipse中采用自带的数据库管理器(Data Management),连通你的数据库:
打开Data Source Explorer
在Database Connections文件夹上右键,选择 New...
选择自己使用的数据库,这里我使用的是MySQL,名字可以根据自己喜好进行填写。
点击下图按钮,新建一个数据库驱动的配置。
选择数据库版本,这里选择MySQL5.1,可以为该配置另起一个名字。此时OK不可以用!
然后选择相应数据库版本的jar包。说明一下:在上一步选择好数据库后,该步骤会默认出现一个jar,需要将该jar包删除,然后根据自己数据库情况选择所有的jar包。
更换成自己的jar包,具体如下:
然后,根据自身情况填写数据库连接配置。此处一定要注意更改成自己要连接的数据库,红圈处默认为database。
接下来,完善Properties下的General选项卡内容,同样是连接数据库的信息,配置完后点击Test Connection按钮测试是否能连通数据库。
然后点击Next,再确认无误后,单击Finish。
之后Data Management就会出现MySQL的数据库资源管理器,发生变化如下说明数据库配置成功。
二、生成hibernate实体类
打开Hibernate Configurations窗口。
然后在打开窗口右击,点击Add Configuration...
然后配置相关的参数。
Name:可以根据自己的情况自定义填写
Project:选择自己的项目(此处使用Project-xiaonei)
Database connection:选择刚刚配好的New MySQL,( 其实可以直接选择[Hibernate configured connection]通过Hibernate配置文件连接数据库,但是通过这种方式并不一定能成功,单独采用Data Management也同样不一定成功,原因不是很清楚,所以最后采用Data Management + Hibernate配置文件的结合方式,这样就比较保险啦 )
在项目内,根据自己的实际情况,选择hibernate.cfg.xml(该文件可以选择生成,也可以选择使用现有的文件)
此处我选择使用我现有的hibernate.cfg.xml文件,具体如下:
然后在Common标签中选择Encoding 为UTF-8,其他默认
点击OK按钮,这样ibernate Configuration就添加了一个配置信息,如下图:
在eclipse的工具栏中点击 Hibernate Code Generation Configurations
如果工具栏中没有该工具,可以从以下路径中进行配置,之后工具栏就会出现相应按钮。
单击该按钮,并选择图中Hibernate Code Generation Configurations
然后弹出如下该窗口,按如下图操作,右击后选择New
弹出如下窗体,选择输出的项目地址,填写包名,勾选Reverse engineer from JDBC Connection,然后创建hibernate.reveng.xml。
这里一定要注意Output directory路径和Package的填写。
创建hibernate.reveng.xml:
Console configuration选择刚刚配置好的hibernate,点击Refresh按钮,就会出现数据库的全部schema,选择你要反向生成对象模型的数据库表,然后将其Include到右侧窗口里,然后点击Finish按钮完成hibernate.reveng.xml的创建。
返回后选择Exporters选项卡,勾选Domain code和Hibernate XML Mappings,然后点击Run按钮
最终生成效果如下: