在项目设计时,要么根据需求分析建立实体类,然后正向生成数据库表;要么先进行数据库表设计,然后逆向生成实体类。也就是说,不会完成一方的设计后再花时间去匹配建立另一方,这么做的原因是:

1、如果不使用正向或逆向工程,则会是1.5倍的工作量,浪费时间

2、无法保证两边的映射一致。因为两边都是自己设计的,就需要人为地保证映射关系的统一,这样会留下隐患

3、开发、维护上都不利,因为如果任意一方由于某些原因需要修改,那么经常两边都要修改,这样的话映射不一致的可能性不仅会更大,而且效率地下

在eclipse中连接数据库

虽然eclipse自带了数据库管理器(Data Management),但这里我使用的是插件DBViewer,将该插件下载后放到plugins目录下,重启eclipse,点击Window-Show View-Other-DBViewer Plugin-DB Tree View,如下:

右键DBViewerPlugin-Add,如下:

在"DataBase Define Name"中为要连接的数据库取一个名字,点击JDBC Driver下的Add File选项添加连接数据库的jar包,点击Next,如下:

填写好数据库配置信息,点击Test connection测试是否连接上数据库,如下:

点击Finish即完成数据库连接,如下:

下载并安装hibernate tools插件

选择Help-Eclipse Marketplace,在搜索框中输入JBoss Tools,点击JBoss Tools 4.1.2 Fianl中的Install选项,如下:

这里我们只需要Hibernate Tools,因此只用勾选此选项,点击Confirm,如下:

安装过程中会弹出两个提示框,一个是提示证书安全,另一个是提示要重启eclipse,我们都点击确定即可。

开发hibernate项目

1.自动生成hibernate.cfg.xml文件

首先创建一个java项目,并导入hibernate包(可以新建一个lib文件夹,将hibernate必须的jar包以及数据库连接的jar包放置到该文件夹下,然后右键-Add To Build Path)。

右键项目-New-other,新建一个hibernate.cfg.xml文件,如下:

由于我们前面已经在eclipse中连接了数据库,因此配置hibernate.cfg.xml文件时,可以点击"Get values from Connection"来读取前面配置的数据库连接信息,如下:

之后选择数据库方言(Database dialect),点击Finish即可。在src目录下会看到自动生成的hibernate.cfg.xml文件,如下:

2.添加hibernate控制台配置

右键项目-New-other,搜索hibernate,选择Hibernate Console Configuration,点击Next,如下:

在Name中指定该hibernate console configuration的名称,在Project中选择项目,在Database Connection中选择前面配置的数据库连接,在Configuration file中选择前面自动生成的hibernate.cfg.xml文件,点击Finish,如下:

3.自动生成hibernate.reveng.xml文件

右键项目-New-other,搜索hibernate,选择Hibernate Reverse Engineering File,点击Next,如下:

在Console configuration中选择上一步配置的名字(即hibernate console configuration中输入的Name),点击Refresh刷新出前面连接的数据库中的全部Schema,点击Include会将指定的数据库或表添加到Table filters中,这里我们不过滤任何表,如下:

点击Finish,在项目下会有一个hibernate.reveng.xml文件,打开该文件,点击Table&Columns标签页,点击Add,选择刚才配置的hibernate console configuration的名称,点击OK,选择要映射的表,如下:

4.自动生成*.hbm.xml文件

点击Run-Hibernate Code Generation-Hibernate Code Genration Configurations,如下:

Main标签页中,在Console configuration中选择前面的hibernate console configuration中配置的名称,在Output directory中选择自动生成的domain类放置的位置,这里我们需要事先在src目录下建一个包(com.kevin.domain)用来存放domain类,勾选Reverse engineer from JDBC Connection,在reveng.xml中选择刚才自动生成的hibernate.reveng.xml文件,如下:

Exporters标签页中,勾选Domain code(.java)和Hibernate XML Mappings(.hbm.xml),如下:

点击Run,在指定目录下就可以看到自动生成的domain类和*.hbm.xml文件了,如下:

注:

1、有错误是因为domain类中没有指定包位置,打开Employee.java文件,添加包位置即可(如package com.kevin.domain;)

2、由于此时没有自动更新hibernate.cfg.xml文件,因此我们需要手动在其中添加需要管理的对象关系映射文件,如下:

3、打开Employee.hbm.xml文件,会发现其中没有指定要映射的domain类的位置,因此我们需要手动加上,即package="com.kevin.domain",如下:

4、Employee.hbm.xml文件中的type属性值可以是java类型的(比如java.lang.String),也可以是hibernate类型的(比如string),一般使用java类型。

使用eclipse逆向工程开发hibernate项目的更多相关文章

  1. eclipse+tomcat开发web项目

    也许正在使用的人会觉得这个过程谁不知道啊? 但是对于一个混迹各种语言编程有些年头的我来讲,却必须记录下来! 因为今天以前,我都通过配置[eclipse的tomcat插件]+编写[ant脚本,build ...

  2. 04--Java--使用eclipse创建开发java项目步骤

    eclipse创建开发java步骤 1.三种创建java项目 1)方式一:在包资源管理器(package explorer)窗口中鼠标右击任意位置选择New --> Java Project,如 ...

  3. 使用Eclipse EE开发web项目

    最近使用EclipseEE开发web项目,遇到了以下几个问题: 1. 通过tomcat启动web应用的时候,总是提示找不到包或者class. 经过排查,发现所有的jar包并没有放到WEB-INF/li ...

  4. 在Eclipse中开发WEB项目

    本文的演示是从本地文件创建dynamic web project,从svn检出的同时创建dynamic web project于此类似.我们推荐使用解压版的tomcat6.x版本,来作为服务器.可以到 ...

  5. 【原】eclipse连接数据库开发web项目

    之前也写过web项目,今天用的时候死活连不上My SQL,浪费了很多时间,下面总结一下: 在java项目里面访问数据库 (1)项目上右击->Build Path->add External ...

  6. Eclipse下配置javaweb项目快速部署到tomcat

    用惯了VS,再用Eclipse,完全有一种从自动挡到手动挡的感觉啊. 很多同学在Eclipse下开发web项目,每一次修改代码,看效果的时候都有右键项目->Run as -> Run on ...

  7. eclipse下新建maven项目

    eclipse下新建maven项目 1.1下载maven安装包 进入Maven官网的下载页面:http://maven.apache.org/download.cgi,如下图所示:\ 选择当前最新版本 ...

  8. 在MyEclipse和Eclipse中添加Hibernate开发工具

    一.插件准备 MyEclipse需要的插件:HibernateTools-3.2.4.zip Eclipse需要的插件:jbosstools-4.2.3.Final_2015-03-26_22-41- ...

  9. Eclipse/Myeclipse 开发项目技巧

    Eclipse/Myeclipse 开发项目 编程的本质: 把现实生活中的业务逻辑用代码实现. eclipse 是一个开放源代码.基于Java的可扩展开发平台. (最初主要用来Java语言开发,但目前 ...

随机推荐

  1. 软件磁盘阵列(RAID)

    RAID软件磁盘阵列 RAID 即廉价磁盘冗余阵列,其高可用性和可靠性适用于大规模环境中,相比正常使用,数据更需要被保护.RAID 是将多个磁盘整合的大磁盘,不仅具有存储功能,同时还有数据保护功能. ...

  2. Dockerfile学习(二)

    这节学习制作一个ssh镜像服务. 创建sshtest目录,进入到该目录中. 假如允许主机B上的root用户可以通过SSH登录到容器内部,那么首先要在B主机上通过ssh-keygen -t rsa命令生 ...

  3. 寻找最大(小)的K个数

    <<编程之美>>一书中提到了寻找最大的K个数的问题,问题可以简单描述为:在长度为N的数组中,寻找第K(K<N)个最大的数.问题的解法涉及到了很多排序算法,对我们理解和运用 ...

  4. Kattis - register 【水】

    题意 就是 有一堆容器,然后可以执行加的操作,每个容量是 2, 3, 5, 7, 11, 13, 17, 19 然后 有进位 比如第一个 容器,到2了,就会重置为0,然后 下一个容器+ 1, 但是要保 ...

  5. 服务中的 API 网关(API Gateway)

    我们知道在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来,这些小的系统他们可以自成体系,也就是说这些小系统可以拥有自己的数据库,框架甚至语言等,这些小系统通常以提供 Rest Api ...

  6. SOA 面向服务架构 阅读笔记(二)

    SOA并不能保证企业的员工更加轻松,企业的收益更加客观. 6.软件组件 6.1  组件和组件的作用  通过可重用的软件代码-组件,可以构建灵活的软件. 6.2  软件组件又称为应用程序,程序,函数,模 ...

  7. INDEL的重新比对和碱基质量分数的重新校准

    1.为什么要做这两步(why): indel的重新比对:这是由于比对软件的自身限制,其可能将包括indel的read解释为snp的read,这就导致calling的错误和后面的碱基质量分数的重新校准. ...

  8. 20145231 《Java程序设计》第一次实验

    实验一 Java开发环境的熟悉(Windows+IDEA) 实验内容 使用JDK编译.运行简单的Java程序: 使用IDEA编辑.编译.运行.调试java程序: 实验知识点 JVM.JRE.JDK的安 ...

  9. HashMap,LinkedHashMap和TreeMap的区别

    Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复会覆盖),但允许值重复. 1. HashMap Hashmap是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获 ...

  10. Android : 反射机制获取或设置系统属性(SystemProperties)【转】

    本文转载自:https://blog.csdn.net/wei_lei/article/details/70312512 Android.os.SystemProperties 提供了获取和设置系统属 ...