PowerDesigner规划数据库&HibernateTools逆向生成java代码

这部分内容对我来说是新知识
PowerDesigner16.5大概700M,下载安装并破解。

创建一个model并将DBMS选择为mysql

自己规划数据库数据表如下图示例

默认PowerDesigner没有comment这个列需要自己手动添加
按ctr+U唤出如下图所示窗口,添加comment列

然后


将下面的代码copy到上面的窗体,运行

Option   Explicit
ValidationMode   =   True
InteractiveMode   =   im_Batch

Dim   mdl   '   the   current   model

'   get   the   current   active   model
Set   mdl   =   ActiveModel
If   (mdl   Is   Nothing)   Then
      MsgBox   "There   is   no   current   Model "
ElseIf   Not   mdl.IsKindOf(PdPDM.cls_Model)   Then
      MsgBox   "The   current   model   is   not   an   Physical   Data   model. "
Else
      ProcessFolder   mdl
End   If

'   This   routine   copy   name   into   comment   for   each   table,   each   column   and   each   view
'   of   the   current   folder
Private   sub   ProcessFolder(folder)
      Dim   Tab   'running     table
      for   each   Tab   in   folder.tables
            if   not   tab.isShortcut   then
                  tab.comment   =   tab.name
                  Dim   col   '   running   column
                  for   each   col   in   tab.columns
                            col.comment=   col.name
                  next
            end   if
      next

      Dim   view   'running   view
      for   each   view   in   folder.Views
            if   not   view.isShortcut   then
                  view.comment   =   view.name
            end   if
      next

      '   go   into   the   sub-packages
      Dim   f   '   running   folder
      For   Each   f   In   folder.Packages
            if   not   f.IsShortcut   then
                  ProcessFolder   f
            end   if
      Next
end   sub

然后把自己创建的一堆model创建为*.sql文件

注意文件编码格式,PowerDesigner和phpmyadmin中的格式需要保持一致


成功导入以后的提示信息

效果如下图所示,哈哈开心吧

上述内容是是使用工具创建.sql文件并在mysql的图形界面phpmyadmin上创建数据结构的过程,相当于过去的劳碌的工作也变成了文件、变成了.sql文件,变成了一个代码的作品,记录一下没有白干。
按照上述做法,可以通过重复的工作,创建整个数据库结构。但是我们的系统是需要重构数据结构,并数据迁移的,因此我们来讨论一下,数据库,怎么改?

  1. 数据库实体Entity
    旧系统实体太少要扩充,比如,版本的概念。

plm中对版本的实现是这样的1:N设计,物料和带有版本的物料是1:N的关系。
旧系统中,体现物料这个实体的有两个表:材料检验表(物料级别)和检验表(条目级别),其中前者通过Matnr+Version作为物料的唯一标识,后者通过Matnr+序号唯一标识一个条目。
材料检验表:物料1:N版本 (1个物料有N个版本)
检验表:物料1:N版本:N*M条目(1个物料有N个版本,1个版本有M个条目)
现在我们修改一下,将两个实体,扩展为三个实体:
物料表(MARA) 物料号Matnr作为唯一标识。MARA中只存储非常非常少的字段,比如3个字段。matnr ename 和 msn,这个表就是要简洁明了。根据plm中的概念(我听说的)从外部界面无法直接感知MARA,只能感知MARC。
物料版本表(MARC) 与MARA是聚合关系,一对多。这个表中体现版本等信息,目的在于,同一个物料编码的不同版本,对应的物料信息,可能完全不一样。比如换了供应商,比如材质,比如彻底就不一样了,这很有可能。MARA的msn作为MARC的外键,用来建立两个表的关联。MARC中主键为vsn,MARA的msn作为MARC的外键。
条目(ITEMS)
主键为isn,外键为vsn。
据说这样可以防止数据冗余。
上述说法,是错误的,原因是在入库检验系统中,物料是没有版本的。这个是因为入库检验中物料的数据来源是SAP中的MM模块中收货相关的报表数据,而我们公司中SAP系统的物料本身就没有版本。
SAP的物料数据来源是PLM,PLM中的物料有版本,但是升版本就必须改变物料号。既然数据源中物料的版本就是一个象征,那么入库检验的时候,物料版本是没有意义的。

对于入库检验系统,物料的意义就是一个编号,关联了待检单和检验标准。
物料----检验标准----检验条目
物料MARA : mSn(PK) 物料编码(M) 物料信息
检验标准StandardMatnr : sSn(PK) 物料编码(FK M) 版本(M)
检验条目StandardItem : iSn(PK) sSn(FK M)
物料和检验标准的关系 1:N
检验标准和检验条目的关系 N:N*M
目前对数据库的规划如下所示

上述内容还要继续修改,字段长度之类的
下面hibernate tools


时间: 2024-11-14 11:34:15

PowerDesigner规划数据库&HibernateTools逆向生成java代码的相关文章

使用xsl来动态生成java代码

动态 xsl本身就是一个构型良好的xml,它能够把一个xml文档转换成另外一个xml文档,或者转换成文本文件.html文件等等.这里就是利用xsl来动态的生成我们想要的java文件(从某种角度看,java代码其实也就是一个文本文件),希望能够通过这篇文章,看到xml以及相关的技术所具有的强大能力! 这里首先给一个xml例子,我们将通过一个xsl从该xml文件中抽取有用的信息来生成java代码(实际上是一个javabean): 以下内容为程序代码<?xml version="1.0"

使用ant工具生成java代码时build failed,总是提示找不到第二张图的东西

问题描述 使用ant工具生成java代码时build failed,总是提示找不到第二张图的东西

求一款自动生成java代码调用序列的eclipse插件

问题描述 求一款自动生成java代码调用序列的eclipse插件 我们知道java代码对于一个特定输入有一个调用序列,比如当前程序运行到A类,在A类中调用callB.b()进入B类,在B类中调用callC.c()进入C类等等. 有没有一款好的eclipse插件能够生成这种调用序列?

求asn1消息格式生成java代码的工具

问题描述 想使用org.apache.harmony的jdk的asn1能力实现编解码,怎么将asn1消息格式生成对应的java代码呢?

用Lombok代码自动生成Java代码 节约开发时间

一.Lombok是什么 Lombok是一款小巧的代码生成工具.官方网址:http://projectlombok.org/ LomBok主要特性有:自动生成默认的getter/setter方法.自动化的资源管理(通过@Cleanup注解)及注解驱动的异常处理等.目前在国外广泛应用. LomBok它和jquery一样,目标是让程序员写更少的代码,以及改进一些原始语法中不尽人意的地方.Lombok能做到这一点.既不是用 annotations process,也不是用反射.而是直接黑到了编译过程中.

求用jsch通过ssh连接远程sqlite数据库(数据库在unix上)java代码例子

问题描述 如题,求各位大侠帮个忙....3qqqqq 解决方案 解决方案二:该回复于2011-02-28 20:04:15被版主删除

mysql-怎么通过java代码实现对数据库的连接

问题描述 怎么通过java代码实现对数据库的连接 通过java代码如何实现对数据库的增删改查,怎么理解Driver?具体的实现过程请求大神解答-jdbc 解决方案 public class DBTool { //sql 2005 protected static String dbClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; protected static String dbUrl = "jdbc:s

eclipse上依据hibernate tools逆向生成PO(Domain Object)的过程

使用eclipse开发一个基于java的maven的web项目,业务逻辑基于spring实现,数据库服务器采用mysql.我们项目的业务逻辑(面向对象)和数据(关系型数据库)之间,依靠hibernate进行映射.对应.使用和处理.hibernate的核心功能之一,就是在面向对象和关系型数据库之间建立转化和映射,让程序员用面向对象的方式看待关系型数据库.(让数据库对程序员透明)开发过程中,为了保持二者的一致,需要进行Domain Object这种POJO的逆向生成.也就是依据mysql数据库中数据

用 Java 生成 Java:CodeModel 介绍

在我们编写代码的时候,常常会有这样的情形:一部分代码是可以根据另一部分代码按照某种特定的模式变化而来的: 有时,随着那一部分被依赖的代码发生变化,依赖的代码不得不跟着修改:有时,这样的代码会随着项目的推进,不止一次 的出现.很典型的一个例子就是,当需要自己实现数据访问层时,通常每个实体类会对应一个 DAO(数据访问对象)类,并 且一般来讲 DAO 类的代码编写是很机械的.这时,我们就需要使用"代码生成"来提高我们的开发效率以及提高代码的可 维护性. Java 有很多种方法可以实现&qu