为什么要使用逆向工程

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

使用PowerDesigner

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

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

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

概念模型:

生成物理模型:

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

生成sql语句

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

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


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

在数据库生成八张表:


在Idea下使用Hibernate逆向工程

参考博文!

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


Hibernate逆向工程【PowerDesigner、idea环境下】的更多相关文章

  1. eclipse环境下基于已构建struts2项目整合spring+hibernate

    本文是基于已构建的struts2项目基础上整合 spring+hibernate,若读者还不熟悉struts2项目,请先阅读 eclipse环境下基于tomcat-7.0.82构建struts2项目 ...

  2. Maven环境下搭建SSH框架之Spring整合Hibernate

    © 版权声明:本文为博主原创文章,转载请注明出处 1.搭建环境 Spring:4.3.8.RELEASE Hibernate:5.1.7.Final MySQL:5.7.17 注意:其他版本在某些特性 ...

  3. 富文本编辑器Ueditor 及 hibernate 逆向工程

    1.1           富文本编辑器Ueditor ueditor下载地址: http://ueditor.baidu.com/ 下载1.4.3 –utf8-Jsp版本.完整demo可参考下载文件 ...

  4. (十四)hibernate逆向工程

    一.hibernate逆向工程生成实体 介绍一个模型设计工具PowerDesigner,这个是j2ee开发必要的一个工具.一般在开发中先使用PowerDesigner 创建实体关系图即概念模型.建立了 ...

  5. 如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  6. Net环境下比较流行的ORM框架对比

    个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是Spring+Struts+Hibernate,除了在学习基础知识的时候被告知可以使用JDBC操作数据库之外,大量的书籍中都是讲述使 ...

  7. Shiro —— Spring 环境下的使用

    一.使用 1.搭建基础环境 (1)导入 Spring 和 Shiro 的 Jar 包 正常导入 spring jar包 导入日志包 log4j-1.2.15.jar slf4j-api-1.6.1.j ...

  8. VS2010 C++环境下DLL和LIB文件目录及名称修改

    VS2010 C++环境下DLL和LIB文件目录及名称修改 转自:http://blog.csdn.net/archielau/article/details/8507581 DLL工程,Debug版 ...

  9. Windows环境下32位汇编语言程序设计(典藏版)

    Windows环境下32位汇编语言程序设计(典藏版)(含CD光盘1张)(年,经典再现!) 罗云彬 著 ISBN 978-7-121-20759-4 2013年7月出版 定价:99.00元 756页 1 ...

随机推荐

  1. [Python] wxPython 状态栏组件、消息对话框组件 学习总结(原创)

    1.状态栏组件 1.基本介绍 上图: 红框框内的就是状态栏. 他可以分成若干个区块,比如上者分为了两个区块,并且比例是固定的,创建时可以指定 每个区块都能够显示 信息,一般通过 绑定事件 实时更新 各 ...

  2. c#通过反射获取自定义属性

    PropertyInfo[] properties = typeof(BPM_ContractApproval_Purchase).GetProperties(); foreach (var prop ...

  3. 2017多校第10场 HDU 6178 Monkeys 贪心,或者DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6178 题意:给出一棵有n个节点的树,现在需要你把k只猴子放在节点上,每个节点最多放一只猴子,且要求每只 ...

  4. 2017-04-21周C语言学习笔记

    C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...

  5. Java项目访问resources文件

    最近在对接支付宝支付的开发,需要取到支付的RSA公钥和私钥.于是把公钥和私钥加到resources文件夹里.但是不知道怎么读到这两个文件,也就是不知道路径怎么写.于是网上搜索了下如何获取工作路径,Sy ...

  6. 如何使用 flannel host-gw backend?- 每天5分钟玩转 Docker 容器技术(62)

    flannel 支持多种 backend,前面我们讨论的是 vxlan,host-gw 是 flannel 的另一个 backend,本节会将前面的 vxlan backend 切换成 host-gw ...

  7. 解决VS2015中没有报表项(ReportViewer)的方法

    作者:何时.微笑成了种奢求 VS2015中没有报表项(ReportViewer),怎么办?这篇文章主要为大家详细介绍了解决VS2015中没有报表项(ReportViewer)的方法,感兴趣的小伙伴们可 ...

  8. BestCoder Round #34_1002 以及 hdu 5191

    枚举最终的W堆积木在哪,确定了区间,那么就需要把高于H的拿走,低于H的补上,高处的积木放到矮的上面,这样最优. 注意多出来的积木可以放在已有积木的前面或者后面,独立成一堆积木,所以需要在n堆积木的前后 ...

  9. GHO2VMDK转换工具分享含VS2010源码

    平常经常用到虚拟机,每次从gho转换为vmdk时都要输入cmd代码,觉得麻烦,自己动手做了个gho2vmdk转换工具,集成ghost32.exe文件,可以一键转换,省时省事.运行时会将ghost32. ...

  10. 常用Linux操作指令

    -------------------------------Linux目录------------------------------- /:根目录,一般根目录下只存放目录,在Linux下有且只有一 ...