分类: hibernate 数据库 java 2011-10-22 21:28 2915人阅读 评论(8) 收藏 举报

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

原因是:

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

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

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

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

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

有关eclipse配置Hibernate环境的方法这里就不叙述了,上网搜吧,我给提供个参考链接:

http://hi.baidu.com/java513/blog/item/6be18a3c5d79daf43c6d9742.html

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

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

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

点击下图中按钮,新建一个数据库驱动的配置。

选择数据库版本,这里是oracle 10g版本,可以为该配置另起个名字。

然后选择相应数据库版本的jar包。

下面就是依据自身情况填写数据库连接配置了。

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

然后点击Next,再确认无误后,单击Finish。

之后Data Management就会出现MyOracle的数据库资源管理器,发生变化如下说明数据库配置成功。

2. 生成hibernate实体类

打开Hibernate Configurations窗口。

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

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

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

依次点击Property file: 的Setup...按钮

新建hibernate.properties:

点击Configuration file: 的Setup...按钮

新建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   

注意:图中的Output_directoty+Package才是之后的实体类所在的包位置。 图中实体类在hibernate包中。

建议Output directory图只到src,Package中填入完整所需的包名。如:com.test.entities。

创建hibernate.reveng.xml:

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

返回后选择Exporters选项卡。此处可有两种生成选择:注解生成或配置文件生成

方式一、注解生成

注解生成效果如下:

方式二、配置文件生成

勾选Domain code和Hibernate XML Mappings,然后点击Run按钮

配置文件生成效果如下:

eclipse逆向生成hibernate的实体类(注解和配置文件)的更多相关文章

  1. Eclipse中通过Hibernate Tools插件实现从数据库逆向生成Hibernate带注解的实体类

    一.安装hibernate tools插件 1.在线安装 通过Eclipse的Help->Install New Software 在线安装插件,插件连接为: eclipse helios(3. ...

  2. eclipse逆向生成实体类注解方式或者xml方式

    转载自:http://www.2cto.com/database/201501/372023.html http://blog.csdn.net/wangpeng047/article/details ...

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

    做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO.意思是,在项目设计时,要么 ...

  4. [转]eclipse借助hibernate tool从数据库逆向生成Hibernate实体类

    如何从数据库逆向生成Hibernate实体类呢??? 1. 首先,要在eclipse中采用自带的数据库管理器(Data Management),连通你的数据库: 然后选择数据库,这里用的oracle, ...

  5. (转) Eclipse通过HibernateTools实现逆向生成Hibernate实体类

    背景:工作中使用Hibernate进行持久化的开发工作,所以有必要详细了解这方面的知识. ps:这里有个问题就是刷新表的时候速度太慢了.还不如自己手动去创建.如果表太多倒是可以采取批量生成的策略. 在 ...

  6. eclipse逆向生成实体类

    (转自:http://blog.csdn.net/wangpeng047/article/details/6877720) 做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理 ...

  7. spring+hibernate实体类注解详解(非原创) + cascade属性取值

    @Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(nam ...

  8. MyEclipse10中自动生成Hibernate的实体和xml配置文件

    前提:1.在项目中添加Hibernate支持 2.MyEclipse中已经创建好数据库连接 3.表已经建好并且有主键 步骤如下: 1.在DB Browser窗口的已打开连接节点中选中用户创建的所有的表 ...

  9. SpringBoot24 SpringDataJPA环境搭建、实体类注解、关联查询

    1 版本说明 JDK:1.8 MAVEN:3.5 SpringBoot:2.0.4 IDEA:旗舰版207.2 MySQL:5.5 2 SpringDataJPA环境搭建(SpringBoot版本) ...

随机推荐

  1. PAT 1023 Have Fun with Numbers

    1023 Have Fun with Numbers (20 分)   Notice that the number 123456789 is a 9-digit number consisting ...

  2. HDFS shell操作及HDFS Java API编程

    HDFS shell操作及HDFS Java API编程 1.熟悉Hadoop文件结构. 2.进行HDFS shell操作. 3.掌握通过Hadoop Java API对HDFS操作. 4.了解Had ...

  3. NOSQL -- Mongodb的简单操作与使用(win10)

    NOSQL -- Mongodb的简单操作与使用(wins) MongoDB 创建集合: db.createCollection(name, options) use huhu db.createCo ...

  4. Qt绘制字体并获取文本宽度

    参考资料: https://blog.csdn.net/liang19890820/article/details/51227894 QString text("abc");QPa ...

  5. 统计一行文本的单词个数 (15 分) 本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。 输入格式: 输入给出一行字符。 输出格式: 在一行中输出单词个数。 输入样例: Let's go to room 209. 输出样例: 5

    MD,一开始就想着怎么 用空格和结尾前判断字母 来计算写的头的爆了, 反过来判断空格后面是否有 =‘ ’就尼玛容易多了 #include<stdio.h> #include<stdl ...

  6. 微信支付 php兼容问题

    总结: php7 已删除 HTTP_RAW_POST_DATA  获取时需要file_get_contents("php://input"); 下面的是兼容方法. //存储微信的回 ...

  7. redux源码解析(深度解析redux+异步demo)

    redux源码解析 1.首先让我们看看都有哪些内容 2.让我们看看redux的流程图 Store:一个库,保存数据的地方,整个项目只有一个 创建store Redux提供 creatStore 函数来 ...

  8. go中for循环使用多个变量避坑

    go for循环语法为: for expression1, expression2, expression3 { // ... } 使用多个变量时,使用平行赋值,需要留意的是expression3处的 ...

  9. xadmin自定义关联菜单

    网上好多自定义xadmin后台数据很少有关怎样设置外键关联菜单的显示,如下图所示: 现有个需求根据model中status字段值,来显示关联菜单三道杠,如上图app状态只有是审核成功才会显示,未审核不 ...

  10. SignalR NuGet程序包

    最近公司有一个边看直播边聊天的需求,直播好搞,直接用腾讯的小直播,组装推流和播放地址,把推流地址拿出去就OK,只要一推流,就可以使用播放地址观看直播,看完后通过webclient去异步下载直播的视频到 ...