Hibernate逆向工程【PowerDesigner、idea环境下】
为什么要使用逆向工程
由于我们每次编写Hibernate的时候都需要写实体,写映射文件。而且Hibernate的映射文件也容易出错。而逆向工程可以帮我们自动生成实体和映射文件,这样就非常方便了。
使用PowerDesigner
在设计数据库表时,我们使用PowerDesigner来生成概念模型\物理模型…
设计一个人员组织架构:有机构、部门、员工、领导、角色、权限。
- 一个机构有多个部门
- 一个部门有多个员工
- 领导可以管理多个部门,同时领导他自己也是员工
- 一个员工可以有多个角色
- 一个角色可以分配给多个人
- 人员角色分配后可以设置是否有效,分配时间等
- 一个角色有多个权限
概念模型:
生成物理模型:
最后生成物理模型是这样子的:
生成sql语句
我们可以单个生成,一个一个复制
也可以把整个物理模型的sql语句一起生成:
/*==============================================================*/
/* DBMS name: MySQL 5.0 */
/* Created on: 2017/6/5 20:22:52 */
/*==============================================================*/
drop table if exists person_role;
drop table if exists t_company;
drop table if exists t_dept;
drop table if exists t_employee;
drop table if exists t_person;
drop table if exists t_privilege;
drop table if exists t_role;
drop table if exists t_role_privilege;
/*==============================================================*/
/* Table: person_role */
/*==============================================================*/
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)
);
/*==============================================================*/
/* Table: t_company */
/*==============================================================*/
create table t_company
(
company_id varchar(32) not null,
name varchar(32),
primary key (company_id)
);
/*==============================================================*/
/* Table: t_dept */
/*==============================================================*/
create table t_dept
(
dept_id varchar(32) not null,
company_id varchar(32) not null,
name varchar(32),
primary key (dept_id)
);
/*==============================================================*/
/* Table: t_employee */
/*==============================================================*/
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)
);
/*==============================================================*/
/* Table: t_person */
/*==============================================================*/
create table t_person
(
person_id varchar(32) not null,
dept_id varchar(32) not null,
name varchar(32),
primary key (person_id)
);
/*==============================================================*/
/* Table: t_privilege */
/*==============================================================*/
create table t_privilege
(
privilege_id varchar(32) not null,
name varchar(32),
primary key (privilege_id)
);
/*==============================================================*/
/* Table: t_role */
/*==============================================================*/
create table t_role
(
role_id varchar(32) not null,
name varchar(32),
primary key (role_id)
);
/*==============================================================*/
/* Table: t_role_privilege */
/*==============================================================*/
create table t_role_privilege
(
role_id varchar(32) not null,
privilege_id varchar(32) not null,
primary key (role_id, privilege_id)
);
alter table person_role add constraint FK_person_role foreign key (person_id)
references t_person (person_id) on delete restrict on update restrict;
alter table person_role add constraint FK_person_role2 foreign key (role_id)
references t_role (role_id) on delete restrict on update restrict;
alter table t_dept add constraint FK_companty_dept foreign key (company_id)
references t_company (company_id) on delete restrict on update restrict;
alter table t_employee add constraint FK_inherit foreign key (person_id)
references t_person (person_id) on delete restrict on update restrict;
alter table t_person add constraint FK_dept_person foreign key (dept_id)
references t_dept (dept_id) on delete restrict on update restrict;
alter table t_role_privilege add constraint FK_belong foreign key (role_id)
references t_role (role_id) on delete restrict on update restrict;
alter table t_role_privilege add constraint FK_own foreign key (privilege_id)
references t_privilege (privilege_id) on delete restrict on update restrict;
在数据库生成八张表:
在Idea下使用Hibernate逆向工程
值得注意的是:Intellij idea下生成出来的映射文件是没有对应的关联关系的。也就是说:一对多或多对多的关系,它是不会帮你自动生成的【好像是这样子的】。。。因此,需要我们自己添加Set【如果需要】
Hibernate逆向工程【PowerDesigner、idea环境下】的更多相关文章
- eclipse环境下基于已构建struts2项目整合spring+hibernate
本文是基于已构建的struts2项目基础上整合 spring+hibernate,若读者还不熟悉struts2项目,请先阅读 eclipse环境下基于tomcat-7.0.82构建struts2项目 ...
- Maven环境下搭建SSH框架之Spring整合Hibernate
© 版权声明:本文为博主原创文章,转载请注明出处 1.搭建环境 Spring:4.3.8.RELEASE Hibernate:5.1.7.Final MySQL:5.7.17 注意:其他版本在某些特性 ...
- 富文本编辑器Ueditor 及 hibernate 逆向工程
1.1 富文本编辑器Ueditor ueditor下载地址: http://ueditor.baidu.com/ 下载1.4.3 –utf8-Jsp版本.完整demo可参考下载文件 ...
- (十四)hibernate逆向工程
一.hibernate逆向工程生成实体 介绍一个模型设计工具PowerDesigner,这个是j2ee开发必要的一个工具.一般在开发中先使用PowerDesigner 创建实体关系图即概念模型.建立了 ...
- 如何在高并发环境下设计出无锁的数据库操作(Java版本)
一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...
- Net环境下比较流行的ORM框架对比
个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是Spring+Struts+Hibernate,除了在学习基础知识的时候被告知可以使用JDBC操作数据库之外,大量的书籍中都是讲述使 ...
- Shiro —— Spring 环境下的使用
一.使用 1.搭建基础环境 (1)导入 Spring 和 Shiro 的 Jar 包 正常导入 spring jar包 导入日志包 log4j-1.2.15.jar slf4j-api-1.6.1.j ...
- VS2010 C++环境下DLL和LIB文件目录及名称修改
VS2010 C++环境下DLL和LIB文件目录及名称修改 转自:http://blog.csdn.net/archielau/article/details/8507581 DLL工程,Debug版 ...
- Windows环境下32位汇编语言程序设计(典藏版)
Windows环境下32位汇编语言程序设计(典藏版)(含CD光盘1张)(年,经典再现!) 罗云彬 著 ISBN 978-7-121-20759-4 2013年7月出版 定价:99.00元 756页 1 ...
随机推荐
- vue小组件练习之文字居中对齐组件
时隔多月,继续学习Vue,这次是一个组件的制作过程 先让我们来看一下组件的预期效果 上图为公司自营的一个微信商城的某一部分截图,可以看到红框内部分的文字多行与单行是居中对齐的,我们现在要做的就是使用V ...
- Python开发规范
背景 Python语言规范 Lint 导入 包 异常 全局变量 嵌套/局部/内部类或函数 列表推导(List Comprehensions) 默认迭代器和操作符 生成器 Lambda 函数 条件表达式 ...
- Ecplise插件安装方法
eclipse3.5以前: 安装Eclipse插件无非两种方式: 1.直接copy插件到features/plugins目录 2.在links目录下创建链接文件 eclipse3.5及以后版本: 1. ...
- Swiper.js
Swiper常用于移动端网站的内容触摸滑动 http://idangero.us/swiper/#.WUCSo_mGOUk
- 【Zookeeper】角色、顺序号、读写机制
角色 leader 负责进行投票的发起和决议,更新系统状态 learner 包括follower和observer follower用于接受客户端请求并向客户端返回结果,在选举过程中参与投票 obse ...
- Node.js之操作文件系统(一)
Node.js之操作文件系统(一) 1. 同步方法与异步方法 在Node.js中,使用fs模块来实现所有有关文件及目录的创建.写入及删除操作.,在fs模块中,所有对文件及目录的操作都可以使用同步与异步 ...
- LNMP1.4 PHP升级脚本
升级PHP前,请确认你的网站程序是否支持升级到的PHP版本,防止升级到网站程序不兼容的PHP版本,具体可以去你使用的PHP程序的官网查询相关版本支持信息.v1.3及以后版本大部分情况下也可以进行降级操 ...
- python专题-读取xml文件
关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...
- JavaScript 30 - 1 学习笔记
学习JavaScirpt30的笔记! ...虽然英语不是很好,但是跟着来还是学到了一些东西. 1-------> JavaScirpt Drum Kit 功能是这样的 ,敲击键盘上面的按钮, ...
- [2016-09-23]远程安装、更新windows服务bat脚本分享
话不多说,有兴趣的自己可以仔细研究下涉及的命令:net use.sc.robocopy 脚本 set BuildConfig=[ENV] set BuildExeName=[your_exe_name ...