zoukankan      html  css  js  c++  java
  • 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【如果需要】


  • 相关阅读:
    周4早上搜索引擎分析 crmim.com| MSCRM开发者之家
    Bat命令学习
    sqlserver日期函数
    ubunto应用软件
    sql for xml
    win7x64 连接oracle 客户端 vs 2010调试 提示“ORA12154: TNS: 无法解析指定的连接标识符 ”ORA06413 问题(转)
    CentOS Rsync服务端与Windows cwRsync客户端实现数据同步
    怎么引导2岁孩子洗手问题
    Libnfcinstallation
    Asterisk资料
  • 原文地址:https://www.cnblogs.com/zhong-fucheng/p/7202913.html
Copyright © 2011-2022 走看看