Hibernate反向工程使用心得

MyEclipse中的hibernate反向工程可以根据数据表自动为我们生成实体类,提高工作效率。

但是,hibernate中单向一对多,多对一,双向多对一关联底层的数据库结构是一样,

双向一对一,单向一对一关联的底层数据库也差不多。

所以在进行反向生成实体类时候需要在生成过程中进行一些设置来生成我们需要的关联关系。

首先必须在myeclipse中建立数据库连接和配置好hibernate环境,

详细可参考:http://blog.csdn.net/fycheung/article/details/7672854

然后就可以开始进行反向生成,

这里以man和phone为例子进行单向man关联多个phone,单向多个phone关联一个man,多个phone和一个man互相关联的反向实体生成。

数据库表的结构:

反向生成步骤:

在DB Browser中打开数据库连接选中要反向生成的表,单击右键,选择Hibernate Reverse Engineering。

注意:如果要生成单向的关联,只能逐个逐个表这样生成,如果同时选择多个,会自动生成双向的关联。

弹出以下对话框:

next:

Generate basic typed composite IDs:

如果数据库表格包含有多个列的主键, 将总是使用 <复合主键> 映射.
Generate version and timestamp tags:

如果启用, 名为 "version" 和 "timestamp" 的列将会在生成的映射文件中作为 <version> 和 <timestamp> 标记出现.

Enable many-to-many detection:

如果有连接表则生成双向多对多关联

Customized Type Mappings:

允许你来指定一个自定义的 JDBC 类型到 Hibernate 类型的转换, 使用 Length, Scale, Precision 和 Nullability 作为精度控制对应原来的 JDBC 类型.

next(这里是配置关联关系的关键):

这个说明以下各参数的作用:

Table details

这里下面可以定义实体类

Include referenced tables (A->B)

同时生成这个表引用的另外一个表的实体类

Include referenced tables (A<-B)

同时生成引用这个表的另外一个表的实体类

Generate support for ListedTable(fk)->UnlistedTable:

如果当前表格是一个从表,生成当前从表实体类到主表实体类访问

Generate support for UnlistedTable(fk)<- ListedTable:

如果当前实体类是一个主表,生成当前实体类到从表实体类访问
下面举例说明一下:

单向一对多关联,man访问多个phone

生成man实体类时候的设置(在生成的Man.hbm.xml中还需要把<set>中inverse=“true”删除):

生成phone实体类时候的设置(勾选Exclude column from reverse engineering表示实体类中不生成manId属性):

单向多对一关联,多个phone可以访问man

生成man实体类时候的设置:

生成phone实体类时候的设置:

双向一对多关联:
       同时选中man和phone表,反向生成时候同时勾选Generate support for ListedTable(fk)->UnlistedTable和Generate support for UnlistedTable(fk)<- ListedTable就可以了,系统会默认让多的一端控制关联关系。

总结:反向生成实体类后还应该检查一下生成的实体类和配置文件是否符合要求,是否需要改动。

时间: 2024-10-28 16:16:27

Hibernate反向工程使用心得的相关文章

Hibernate反向工程生成DAO

通过Hibernate反向工程生成个DAO: package dao; import java.util.List; import org.hibernate.LockMode; import org.hibernate.Query; import org.hibernate.criterion.Example; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * A data access object (DAO) pr

自己手动安装hibernate tools for eclipse(Hibernate反向工程)

自己手动安装hibernate tools for eclipse(Hibernate反向工程) 用过myeclipse的人都知道,myeclipse有集成一个hibernate的可以根据数据库表自动生成mapping映射(xml 或annotation)以及java的pojo类的工具.其实hibernate官方网站就有提供一个这样的工具,当然,现在的 名字叫做jboss tools,而hibernate tools只是其中的一小部分. 对于像我这样的对myeclipse日渐臃肿而无法接受的人而

Myeclipse6.0 的hibernate反向工程

Myeclipse6.0 的hibernate反向工程 第一步:建 DB Browser 方法一:Window -> Open Persipective -> MyEclipse Database Explorer 以后步骤同二 方法二: window / show view /other 选择如下图 最后,点击OK,在工作空间上将会出现一个DB Browser的配置页面,在配置页面空白处,右键,选择New按钮 在弹出的对话框当中配置数据库连接 点完成即可 点击 my_driver 可以new

关于hibernate的一点心得

1.部门和员工的关系: 部门<->员工是一对多的关系,即一个部门有多个员工,所以员工表里有部门id:depart_id 在下面这个代码中各添加部门和员工的一个记录即:新增一个部门,同时这个部门下有一个员工 static Department add() { Session s = null; Transaction tx = null; try { Department depart = new Department(); depart.setName("depart name&qu

MyEclipse Hibernate反向工程生成实体类

不废话,直接上步骤 step1.Window -> Open Perspective -> MyEclipse Database Explorer 到DB Broswer界面 step2.右键 -> New,新建一个数据库连接 step3.创建一个java项目 step4.给项目添加Hibernate Capabilities 项目 -> 右键 -> MyEclipse -> Add Hibernate Capabilities Add Hibernate Capabi

Hibernate反向工程在javaweb下的操作配置

1.在javaEE下新建项目,在WEB-INF的lib文件夹下添加所用到的jar包. 2.创建Hibernate 主配置文件 文件----新建----其他下的Hibernate目录,如图: 下一步,注意目录在项目的src下  如图 下一步 数据如图根据自己的数据库填写 调试和自动建表方式:也可以在向导里加,具体代码如下 3.创建Hibernate Console Configuration 目的是创建数据库连接一般是选择项目的配置文件Hibernate.cfg.xml获取连接信息 会自动生成如下

hibernate反向工程

第一步:安装 hibernate tools 在eclipse中安装插件 hibernate tools 第二步:新建一个java工程,导入hibernate相关jar包和mysql的驱动jar包 第三步:打开 hibernate configuration 视图 在打开的hibernate configuration 视图中右键,add configuration 输入Name,选择hibernate version,选择导入的项目工程,选择database connection(数据库连接)

011 Hibernate反向工程构建实体和hbm文件 - bos

package com.hao.bos.entity;// Generated 2017-8-15 16:30:28 by Hibernate Tools 4.0.0 import java.util.HashSet;import java.util.Set; /** * 定区 */public class Decidedzone implements java.io.Serializable { private static final long serialVersionUID = 1L;

hibernate的学习心得(引用知乎的一个author)

这篇文章引用于知乎的一个author的观点,原文也是直接copy,我个人觉得这篇文章最厉害的是最后的一段话,深刻的见地啊! 下面是原文: Hibernate入门容易,掌握精通我也不敢自夸.我第一遍看Hibernate文档的时候也觉得很吃力,但不是因为Hibernate难掌握而感到吃力,是因为Hibernate文档处处都是持久层设计的经验和最佳实践. ###adv### Hibernate文档准确的来说,绝大部分内容都在讲对象的持久层设计,而不是简单的Hibernate使用,使用问题查Java d