Hibernate逆向工程【PowerDesigner、idea环境下】

为什么要使用逆向工程

由于我们每次编写Hibernate的时候都需要写实体,写映射文件。而且Hibernate的映射文件也容易出错。而逆向工程可以帮我们自动生成实体和映射文件,这样就非常方便了。

使用PowerDesigner

在设计数据库表时,我们使用PowerDesigner来生成概念模型\物理模型…

设计一个人员组织架构:有机构、部门、员工、领导、角色、权限。

  • 一个机构有多个部门
  • 一个部门有多个员工
  • 领导可以管理多个部门,同时领导他自己也是员工
  • 一个员工可以有多个角色
  • 一个角色可以分配给多个人
  • 人员角色分配后可以设置是否有效,分配时间等
  • 一个角色有多个权限

概念模型:

这里写图片描述

生成物理模型:

这里写图片描述

这里写图片描述

最后生成物理模型是这样子的:

这里写图片描述

生成sql语句

我们可以单个生成,一个一个复制

这里写图片描述

也可以把整个物理模型的sql语句一起生成:

这里写图片描述

1 /*==============================================================*/ 2 /* DBMS name: MySQL 5.0 */ 3 /* Created on: 2017/6/5 20:22:52 */ 4 /*==============================================================*/ 5 6 7 drop table if exists person_role; 8 9 drop table if exists t_company; 10 11 drop table if exists t_dept; 12 13 drop table if exists t_employee; 14 15 drop table if exists t_person; 16 17 drop table if exists t_privilege; 18 19 drop table if exists t_role; 20 21 drop table if exists t_role_privilege; 22 23 /*==============================================================*/ 24 /* Table: person_role */ 25 /*==============================================================*/ 26 create table person_role ( person_id varchar(32) not null, role_id varchar(32) not null, state varchar(32), primary key (person_id, role_id) ); 27 28 /*==============================================================*/ 29 /* Table: t_company */ 30 /*==============================================================*/ 31 create table t_company ( company_id varchar(32) not null, name varchar(32), primary key (company_id) ); 32 33 /*==============================================================*/ 34 /* Table: t_dept */ 35 /*==============================================================*/ 36 create table t_dept ( dept_id varchar(32) not null, company_id varchar(32) not null, name varchar(32), primary key (dept_id) ); 37 38 /*==============================================================*/ 39 /* Table: t_employee */ 40 /*==============================================================*/ 41 create table t_employee ( person_id varchar(32) not null, dept_id varchar(32), name varchar(32), employee_id varchar(32), primary key (person_id) ); 42 43 /*==============================================================*/ 44 /* Table: t_person */ 45 /*==============================================================*/ 46 create table t_person ( person_id varchar(32) not null, dept_id varchar(32) not null, name varchar(32), primary key (person_id) ); 47 48 /*==============================================================*/ 49 /* Table: t_privilege */ 50 /*==============================================================*/ 51 create table t_privilege ( privilege_id varchar(32) not null, name varchar(32), primary key (privilege_id) ); 52 53 /*==============================================================*/ 54 /* Table: t_role */ 55 /*==============================================================*/ 56 create table t_role ( role_id varchar(32) not null, name varchar(32), primary key (role_id) ); 57 58 /*==============================================================*/ 59 /* Table: t_role_privilege */ 60 /*==============================================================*/ 61 create table t_role_privilege ( role_id varchar(32) not null, privilege_id varchar(32) not null, primary key (role_id, privilege_id) ); 62 63 alter table person_role add constraint FK_person_role foreign key (person_id) references t_person (person_id) on delete restrict on update restrict; 64 65 alter table person_role add constraint FK_person_role2 foreign key (role_id) references t_role (role_id) on delete restrict on update restrict; 66 67 alter table t_dept add constraint FK_companty_dept foreign key (company_id) references t_company (company_id) on delete restrict on update restrict; 68 69 alter table t_employee add constraint FK_inherit foreign key (person_id) references t_person (person_id) on delete restrict on update restrict; 70 71 alter table t_person add constraint FK_dept_person foreign key (dept_id) references t_dept (dept_id) on delete restrict on update restrict; 72 73 alter table t_role_privilege add constraint FK_belong foreign key (role_id) references t_role (role_id) on delete restrict on update restrict; 74 75 alter table t_role_privilege add constraint FK_own foreign key (privilege_id) references t_privilege (privilege_id) on delete restrict on update restrict; 76

在数据库生成八张表:

这里写图片描述


在Idea下使用Hibernate逆向工程

参考博文!

这里写图片描述

值得注意的是:Intellij idea下生成出来的映射文件是没有对应的关联关系的。也就是说:一对多或多对多的关系,它是不会帮你自动生成的【好像是这样子的】。。。因此,需要我们自己添加Set【如果需要】


点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

一篇文章带你了解JavaScript日期

日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用

Hibernate逆向工程【PowerDesigner、idea环境下】 - HelloWorld