eclipse从数据库逆向生成Hibernate实体类

     做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO。意思是,在项目设计时,要么根据需求分析建立实体类,由正向生成数据库表;要么就先进行数据库表设计,再逆向生成实体类。没有说进行完任意一方的设计后再去花时间去自己匹配建立另一方的设计。

原因是:

1. 1.5倍工作量,浪费时间。(时间对公司来说很重要)

2. 无法保证两边映射一致。因为两边都是自己设计的,那么就需要人为保证映射关系统一,会有隐患。

3. 开发、维护上都不利。因为如果任意一方因某些原因需要改用,那么经常要两边都要改,这样的话映射不一致的可能性不仅更大,而且效率低下。而如果利用正逆向工程的话,则很容易解决。

所以,因项目原因我便研究了下由数据库逆向生成Hibernate实体类的方法。

在Myeclipse中,正逆向工程操作比较简单,而如果是eclipse的话,会比较麻烦,因为必须要先配置下Hibernate环境(同理如果要生成其他持久化层框架的实体类,也需要先配置)。

那么下面讲述正题:如何从数据库逆向生成Hibernate实体类

1. 首先,要在eclipse中采用自带的数据库管理器(Data Management),连通你的数据库:

 然后选择数据库,这里用的mysql,然后给个名字,如mysql。

接下来,完善Properties下的General选项卡内容,同样是连接数据库的信息,配置完后点击Test Connection按钮测试是否能连通数据库。

然后点击Next,再确认无误后,单击Finish。 之后Data Management就会出现mysql的数据库资源管理器,发生变化如下说明数据库配置成功。

2. 生成hibernate实体类 打开Hibernate Configurations窗口。

然后在打开窗口右击,点击Add Configuration...

Project选择项目(test),Database connection选择刚刚配好的mysql(其实可以直接选择[Hibernate configured connection]通过Hibernate配置文件连接数据库,但是通过这种方式并不一定能成功,单独采用Data Management也同样不一定成功,原因不是很清楚,所以最后采用Data Management + Hibernate配置文件的结合方式,这样就比较保险啦)

在项目(test)内任意位置新建Hibernate的相关配置文件(hibernate.properties和hibernate.cfg.xml)。 新建hibernate.properties:

新建hibernate.cfg.xml:

返回Edit Configuration窗体后,选择Common选项卡中Encoding选择UTF-8,其他默认即可,点击OK按钮

这样Hibernate Configuration就添加了一个配置信息,如下图

在eclipse菜单栏中的工具栏的空白处右击鼠标,选择Customize Perspective

弹出如下窗体后,依照图中选择Command Groups Availability选项卡,勾选Hibernate Code Generation,然后单击确定。

之后工具栏就会出现相应按钮。

单击该按钮,并选择图中Hibernate Code Generation Configurations

然后弹出如下该窗口,按如下图操作,右击后选择New

弹出如下窗体,选择输出的项目地址,填写包名,勾选Reverse engineer from JDBC Connection,然后创建hibernate.reveng.xml

创建hibernate.reveng.xml:

Console configuration选择刚刚配置好的hibernate,点击Refresh按钮,就会出现数据库的全部schema,找到你的数据库,然后将其Include到右侧窗口里,然后点击Finish按钮完成hibernate.reveng.xml的创建。

返回后选择Exporters选项卡,勾选这些,然后点击Run按钮

最终即可生成。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

漏洞追踪:最新IE UXSS漏洞技术分析

最近David Leo在Full Disclosure上爆出了一个ie的 uxss 漏洞,可以绕过ie的同源策略。FreeBuf也有相关的报道(点我查看)。本文...

20970
来自专栏从零开始学自动化测试

Appium+python自动化16-启动ios上Safari浏览器

前言 在mac上搭建appium踩了不少坑,先是版本低了,启动后无限重启模拟器。后来全部升级最新版本,就稳稳的了。本篇介绍如何用appium启动ios上的saf...

58040
来自专栏云飞学编程

Python爬虫技巧!网站有反爬?我们有selenium!

框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从...

73210
来自专栏V站

WordPress丨如何利用.htaccess文件进行缓存?

将以上代码一字不漏的扔进website中的 .htaccess文件,规律是以秒计算,自行修改!

33040
来自专栏QQ音乐技术团队的专栏

electron 构建跨平台桌面应用

昨日(2016.09.13)本文发表后,获得了一定的阅读和转发量,但经部分网友反馈和仔细审核后发现,在与 NW.js 对比的环节,言辞欠妥,且数据的真实性有待考...

1.3K110
来自专栏wOw的Android小站

[iOS] Win8下在Vmware11中安装使用苹果系统OS X 10.10

  近来因为需要做 iOS 的项目,所以需要多花一些时间看看敲敲代码。因为自己手头上并没有 Mac(过年为了闲的时候能玩玩游戏买了联想,唉),想想不能只靠每天在...

20400
来自专栏乐百川的学习频道

Visual Studio Code介绍

应该有很多人都知道Atom编辑器吧,它是由Github开发的一个跨平台的编辑器。它使用了跨平台的Electron,用前端技术编写图形界面。一开始我也推荐过这个编...

30050
来自专栏电光石火

eclipse从数据库逆向生成Hibernate实体类

     做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后...

24590
来自专栏静默虚空的博客

Webpack 代码分离

Webpack 代码分离 ? 提示: 1、版本问题 本文基于 webpack 2.x 版本。webpack 2.x 相比 webpack 1.x 有重大...

31070
来自专栏算法修养

Atom打造 c/c++编译环境(忙了一个上午)

众所周知 Atom是一款非常酷炫的编辑器。因为它就像上古卷轴一样,玩家可以开发各种dlc补丁,实现自己想要的效果。所以Atom 可以被你改造成自己想要的东西,可...

65870

扫码关注云+社区

领取腾讯云代金券