• 论文导航
  • 论文专题
  • 论文源代码
  • 设计资源
  • 原创论文
  • 交流互动
  • 作业答案
  • 工具
  • 会员
  • 设计专题

首页|原创论文|原创论文|论文全套|点数论文|实用文档|课程设计|定作论文|毕业论文|考试资料|知识在线|密码保护|大学生|论文帮助|保健养生|健康家园|期刊导航|创业资料|毕业论文|站长学院|学习娱乐|演示文稿|免费论文|源代码|博士论文|研究论文|参考论文|下载分类|写作指导|应用文|英语论文|文化|哲学|艺术类|计算机|工学|教育类|文学|社会学|政治|医药学|理学|法学|公共管理|财务管理|工商管理|会计审计|管理学|证券金融|财政税收|经济学|论文范文|网络学院|早教|就业指导|求职英语|简历|公务员|动漫频道|作文大全|土木工程|法学|计算机|护理学|会计学|交通运输|工商管理|汉语言|原创|计算机论文全套|计算机点数论文|点数参考论文|ASP设计|ASP.NET设计|VB设计|JSP设计|C#设计|PHP设计|JAVA设计|VF设计|DELPHI设计|PB设计|VC++设计|计算机网络|机械论文|单片机论文|电子论文|asp源码| asp精品| php精品源码| vb精品| vfp精品源码| Java精品|Asp.net精品源码|Jsp精品|定作论文

BS| CS | vb| VC | 设计| 系统 | 毕业| JSp | web| net | PLC| FLASH | sql| PHP | CAD| 源码 | pb| delphi | 方案| ppt | J2ee| HTML | android| access | vfp| 模具 | j2me| service | photo| CPA | TCP| J2ME | ASP| java | ATL| 案例 | 单片机| Ajax | powerbuilder| frontpage | div| 报告 | 毕业设计| 电工 | 课程| 嵌入式 | 通讯| 软件测试 | Unix编程| 3D图形编程 | 人工智能| 图形 | Internet/IE编程| 界面编程 | SQL Server| 代理服务器 | 系统编程| 单片机开发 | 人工智能| 文件操作 | RichEdit| 屏幕保护 | 网格计算| uCOS | JspServlet| 驱动编程 | Shell编程| MTK | Java编程| 酒店行业 | 其他小程序| 外挂编程 | VC书籍| .net编程 | 教育系统应用| 中间件编程

下载目录|论文及源代码|asp源码|asp精品源码|php精品源码|vb精品源码|vfp精品源码|Java精品源码|vc++精品源码|ACCESS精品源码|Authorware精品源码|Asp.net精品源码|Jsp精品源码|DIV+CSS模板|FLASH精品源码|PB精品源码|Android源码 |asp代码|ajax代码|php代码|html代码|java代码|jsp代码|pb代码|Ruby代码|sql代码|vfp代码|数据结构与算法|汇编语言|Perl代码|delphi代码|flash代码|js代码|net代码|vb代码|vc代码|DVD光盘源代码|ipad源代码|后台模板|CSS菜单|CSS图表|图片图标|精美Word模板|精美EXCEL模板|精美PPT模板|系统操作视频和下载|ASP在线学习|PHP在线学习|JSP在线学习|JAVA在线学习|NET在线学习|VC在线学习|VB在线学习|VFP在线学习|SQL在线学习|PB在线学习|PHOTOSHOP在线学习|Delphi在线学习|计算机点数论文|点数参考论文|ASP设计|ASP.NET设计 |VB设计|JSP设计|C#设计|PHP设计|JAVA设计|VF设计|DELPHI设计|PB设计|VC++设计|计算机网络|机械论文|单片机论文|电子论文

C++|VB|ASP|VF|DELPHI|JSP|电气|计算机|经济|打包下载|查询工具|设计定作|设计专题|ASP,网站,C/S,设计等定作

网站首页|原创系统|工商管理|护理学|会计学|行政管理|计算机|土木工程|汉语言|机械设计|交通运输|法学|卫生法学

内涵段子| 冷笑话| 幽默笑话| 短信笑话| 其它笑话| 大杂烩| 青芜校园| 社会广角| 动漫风云| 征婚交友| 股票基金| 私房话|社会趣闻| 手机地带| 其它笑话 动漫风云| 冷笑话

作业答案| 小学作业| 高中作业| 中专作业| 初中作业| 大专作业| 大学作业| 研究生作业|原创论文|论文下载|下载源代码|精器资源|会员中心| 查询资料| 暑假作业| 家庭作业

IP地址查询 搜索IP地址所在的地理位置 | 英文词典、在线翻译 在线新华字典/生字查找 | 网速测试 测试网络连接速率 | 文件扩展名文件后缀名查询 | 下载地址转换 迅雷/快车下载地址转换 | 在线生成Favicon图标 | 繁体与简体自由转换工具 | 论坛常用发帖代码 | 在线制作个性邮箱图标 || 汉字拼音及五笔编码查询 | 汉字拼音查询 | 查询域名或同IP下所有站点 | Google PageRank查询 | 查看域名WHOIS信息 | ALEXA世界排名查询服务 | HTML转换JS代码 | 将代码以BASE64方式加密/解密 | JS在线加密/解密 | 字符转UTF-8编码 | 链接地址16进制加密 | 字符串32位MD5加密 | 将代码以Escape加密/解密 | 字符串转换为ASCII码器 | 代码美化、压缩、混淆加密 | ASCII字形生成器 | 页面转换效果生成器 | 正则表达式检测器

会员中心|会员登录|我要充值加点|我要充值论文

全套论文|设计下载|源码|原创论文|下载目录|论文总站|论文搜索|最新论文| 万能工具|定作论文|定作设计|毕业设计 |Word格式|管理系统 课程设计|论文专题 |保存到桌面 |演示|系统 | 设计 | 毕业 | 通信 | 模具 | 单片机 | 方案 | 答辩PPT|J2EE

您现在的位置:网学>>免费论文>>论文导航>>Windows编程>>Java开源代码
  • Hibernate代码生成工具 设计全攻略

    栏目导航 Windows编程 2013-10-22 2013-10-22  版权 版权投诉 上传资料 上传资料 复制论文网址 复制论文网址 上传用户:261888667

    【Java开源代码栏目提醒】:网学会员为需要Java开源代码的朋友们搜集整理了Hibernate代码生成工具 设计全攻略 - 技术总结相关资料,希望对各位网友有所帮助!

    Hibernate代码生成工具 设计全攻略 Hibernate代码生成工具设计全攻略2010-08-31 11401.简述 Hibernate是一个开放源代码的对象关系映射框架它对JDBC进行了轻量级的对象封装提供HQL查询语言使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

        使用Hibernate必须为配置映射文件-ClassMapping File和Configuration File现在市场上提供了诸多Hibernate代码生成工具比如XDoclet以及Hibernate官方自带的sechmaExport工具。

        然而它们都有如下的缺点仅提供一些基本的输入模版用户仍需要时间进行配置和修改没有提供自动的持久类以及InvokeBean的代码生成不支持图形界面不支持对HibernateTestCase的代码生成。

         Hibernate工具具备以下特点 1.根据UML生成的数据库模型自动生成映射文件。

         2.根据UML产生Hibernate持久类。

         3.Hibernate模型检验。

         4.生成自动测试代码。

         5.与Eclipse集成 Hibernate代码生成工具采用基于PowerDeigner的模型扩展功能来实现Hibernate的代码生成。

        PowerDesigner以下简称PD是一款一流的数据库建模工具E-R模型设计、物理模型设计同时它对UML、报表、XML、团队开发知识库Repository都支持的相当好所有模型都可以正向、逆向的相互转换。

        PD的模型是由它的元模型组成。

        简单的说元模型就是组成模型的模型。

        基于这些元模型PD提供了一套GTL开发语言可以轻易地扩展出自己的代码模版和流程也可以对现有的语言模型进行修改以适应需求PD支持利用VBScript来扩展语言、改变PD模型、模型检测。

        对于EclipsePD也能做到快速的集成并可以利用JAVA语言来修改PD模型。

         注GTL可以说是一种面向对象的脚本语言它可以在不同的元模型上加以扩展增加诸如添加生成文件、原型、菜单、代码模版、扩展属性等等功能如图1所示将在后续部分详细的阐述。

        由于元模型是面向对象的比如所有的类、接口等的元模型都继承于Classifier元模型即如果在Classifier中扩展了一个功能那么继承它的模型均拥有这样的功能和脚本也可以覆盖重写这样的功能以实现多态概念。

         打开扩展模型编辑窗口选择ModelExtended Model Definition在弹出的窗口的Toolbar上选择Import Extended Model Definition倒数第二个按钮来加载已有的模型也可以新建扩展模型选择Add Row按钮然后在表格中双击要编辑的模型的第一列即可弹出如图1所示的界面 为了让读者更好的了解PD的元模型概念截取了Hibernate代码生成工具所用到的元模型架构图如图2所示。

        读者可以在PD的安装目录下找到pd安装路径ExamplesMetaModel.oom图表存放在PdOOM下名字为Class Objects。

         由于篇幅原因会摘取典型的代码和模型来讲解如何设计Hibernate代码生成工具。

         Hibernate代码生成的总体架构流程活动图 Hibernate自动生成文件的原则是 1子类的映射信息挂在根类的映射文件下Root Class即子类将不独立生成代码 2Value-Type类以及没有持久化的类将不生成代码。

         3不为非类对象生成代码比如接口等 其中 Check Models in DiagramHibernate模型检测判断DomainModel是否符合Hibernate语法。

        如果出错PD将抛出错误提示信息提供自动纠错的功能 Generate Configuration File选择模型属性Model-Model Properties用户可以在Extended Attribute下设置配置信息PD会根据配置信息生成Configuration File。

         Get each class in Diagram这是PD的机制它会自动获取UML内的所有模型元素并根据每个模型的扩展属性ProfileGenerated File的流程来生成代码文件。

         Generate Basic Mapping类的基本映射它包含idcomposite-idpropery等。

         Get SubClass Style子类的映射递归获取。

         Generate Join当持久类对应于多张表的映射时需要用Join来指明。

         Generate Association Mapping根据类之间Association的类型来判断是哪种关连映射本工具支持one-to-oneone-to-manymany-to-onemany-to-many根据Association Properties的Detail标签下的Multiplicity来设置支持集合ArraySetListbagidbag根据ContainType来设置。

         Get Java Code Information扩展模型是基于现有的语言模型即扩展模型能够获取语言模型的模版和各种设置对于Hibernate的Java持久类我们只须在Java代码下增加对应Attribute的Getter和Setter即可。

        source Generate Invoke Bean生成Hibernate的CRUD函数。

         Generate Test CaseHibernate测试用例代码将生成的随机数据来验证Hibernate的正确性。

         Generate Log4J生成Log4J的配置文件 Generate ANT build.xml当用户在Generation Files下的Options中设置Ant为True并配置了Ant的Lib的路径则Hibernate Tools会生成build.xml然后将会自动运行Ant来测试Hibernate生成结果将会被Log4J存入日志。

         2.技术要点 O/R Mapping PD从8.0开始就不断加强O/R Mapping除了代码模型的生成以外PD也生成O/R Mapping的定义诸如生成EJB CMP组件。

        用户可以定义O/R Mapping来建立OOM与PDM之间的关系。

         PD支持3种方式的O/R Mapping 第一种是从类图转换成数据模型之后由PD自动建立连接适用于自顶向下的设计过程 第二种是从数据模型转换成类图之后由PD自动建立连接适用于自下向上的设计过程 第三种是建立类图和数据模型之后由用户手动建立适用于同步设计或者是后期的修改 建立过程 第一种选择类图然后设计持久类POJO完毕之后选择Tools-Generate Physical Data Model。

        在弹出的窗口中选择Detail标签选中O/R Mapping选项即可。

        读者可以选择是更新现有的数据库还是新建数据库。

         第二种与第一种建立过程相似只是换成在数据库模型中选择Generate Object-Oriented Model 第三种用户必须首先建立DataSource在左边WorkSpace树形目录下找到类文件然后右击选择NewData Source在弹出的窗口的Models标签中选择并选择想与之关联的数据库模型。

        在类模型中打开类属性双击要建立O/R Mapping的类选择Mapping选项卡点击按钮添加刚才建立的DataSource。

        然后点击添加类映射的数据表即建立完毕。

         用户可以添加多张表它表示一个类可能对应多张表的映射Hibernate的映射则应该用Join属性来指明。

         注当用户建立了ClassSourcePD会根据类的属性和表的字段自动建立AttributeMapping当然用户也可以在AttributeMapping属性页下对其映射进行修改。

         大家知道Hibernate的映射文件必须包含对表的表述比如columnproperty属性等等在PD中通过元模型中的Mapping可以轻易地获取对应的表信息。

        图4是GTL中用到的O/R Mapping元模型。

         O/R Mapping架构图 架构说明 1Association 在Asoociation元模型中可以通过Mappings来获取AssociationMapping即用户在Mapping for下选择的DataSource每个AssociationMapping都会有SourceClassifiers它是AsoociationSource标签内的映射集合如图5所示。

        SourceClassifiers集合中的元素也就是数据模型中的Reference元模型如图6所示。

         由于PD可以在Association Mapping下添加数据模型中的其他Reference和Table所以在做Hibernate代码生成时采用了类型判断以避免因类型不匹配而造成的错误。

         实现代码表映射注附录部分将介绍部分GTL语法 . 实现代码referenceColumnHelper模版 2Class和Attribute 获取数据库模型的方法与Association类似在O/R Mapping中ClassMapping的SourceFeature等价于数据表AttributeMapping的SourceFeature等价于数据表中的列信息。

        图7给出了在编写过程中使用到的数据库元模型的架构图。

         实现代码获取类对应的表信息 说明Mappings.First.ClassSources表明当前Data Source下的表集合 实现代码获取Attribute对应的列信息 例如AttributeMappings.First.SourceFeature.Code AttributeMappings.First.SourceFeature对应于图7的Column元模型。

         Extended Attribute Hibernate生成工具中对于映射文件难免要遇到大量的选项让用户选择或者输入这时我们就可以利用PD提供的Extended Attribute来扩展模型的属性。

        对于UML模型除了Dependency和Generalization其余模型均有Extended Attribute来扩展。

         设置Extended Attribute步骤进入扩展模型编辑窗口在Profile下选择一个元模型然后右键选择Extended AttributePD已提供了多种默认的选项加括号的当然用户增加自己的Extended Attribute Type在Profile下的shared目录上按右键选择Extended Attribute Type然后在右边可以设置列项内容以及默认值等等。

        设置完之后读者就可以在模型的扩展属性中引用到自定义的类型如图8所示。

        在GTL中可以用属性名引用到当前用户的选择值也可以用模版名引用到GTL模版读者可以选择模版并按F12跳转。

         Check Model 考虑由于基于UML建立的DomainModel对于Hibernate语法来说难免有一些语法上的错误比如在两个类之间建立Association但对应的表之间却没有Reference或者是有Reference却没有Joins下的Column这时我们应该给出一个错误警告提示用户检查。

         以刚才提到的AssociationCheck为例将介绍如何实现用户自定义的Check。

         打开Hibernate扩展模型选中ProfileAssociation右击选中NewCustom Check。

        在右边读者可以看到有四个选项卡如图9所示。

         Check Script用于检测模型Checktrue将不出现错误信息。

         Autofix Script用于自动修复模型错误Fixfalse表示不修复该错误。

        当PD监测到错误时用户可以在错误上右键选择Automatic Correction即可。

        对于自动修复的错误会在图标右下角加上一个号如表示PD以根据Autofix Script修复完成。

         Global Script用于存放全局函数在任何元模型的Check Model均可调用。

         实现代码 Check Script用于检测Refence的建立正确与否。

         注PD会对每个模型进行检测包括Package所以如果读者希望通过程序来控制该模型是否被检测只须在满足条件的语法段内加上CheckTrue表示验证正确并跳过即可。

         Persistent Class持久类 对于POJO的持久类必须为其每个类的属性增加Getter和Setter函数。

        扩展模型是基于语言模型之上的也就是说语言模型中的模板等内容均可在扩展模型中覆盖和重写。

        所以在Hibernate扩展模型中采用重载的方法扩展了Java语言模型的代码生成保留了原先Java那部分代码并在扩展模型中加上自己的Getter和Setter模版。

         在Java语言模型中代码生成是依靠source模版来完成Java代码的同时有一个initializers模版实现当完成Attribute之后的一些初始化工作所以在相同位置Class元模型的地方重写了initializers模版代码如下 在Attribute元模型中增加getterFunction、setterFunction模版代码如下 然后在Class元模型中增加持久类的Generated Files并在模版编辑框内输入source即可。

         Generated Files PD在每个元模型中提供了文件生成的功能。

        在Class元模型上右键选择Generated Files。

        在右边窗口中在File Name下输入生成后的文件名。

        由于Hibernate映射文件的文件名与类名相同故输入mappingFilename同时建立mappingFilename模版并输入Code.hbm.xml。

         注所有的元模型都继承于NamedObjectNamedObject继承于BaseObject在NamedObject中存放了各种元模型的标准属性比如模型名称Name、代码名称Code、注释、描述等等。

        所以为了取到类的名称就在类元模型下输入Code.hbm.xml那么PD会根据代码名称为每个类建立相应的文件前提是该类可以被生成即已持久化。

         Model Model元模型中主要实现对Configuration Mapping的连接信息的配置诸如JDBC等。

        所用到的方法也就是Extended Attribute和Mapping代码模版。

        由于篇幅原因不一一列举读者可以参考刚才所讲或者可以在PD安装目录下运行pdvbs11.chm来获取帮助。

         Task Task在代码生成完毕之后被激活然后PD会依次序执行选中的任务。

        扩展了Hibernate模型增加了ANT的Lib路径生成的目录名称等等选项。

        在GenerationOptions下建立新的选项即可类似于Extended Attribute。

        调用Options选项时输入如下代码GenOptions.选项名即可获取。

         对于Task希望能够借助ANT的build.xml配置进行自动测试。

        在PD中JAVA语言模型已经提供了ANT的build.xml的自动生成并预留接口customExecuteTarget、customerProperties、customTaskDefs三个模版目的为了能让扩展模型来重载有兴趣的读者可以查看Java语言模型LanguageEdit Current Object Language浏览JavaProfileModelTemplatesAntantTemplate。

         建立Task 在GenerationTasks上右键选择New。

        输入Task Name就是真正执行的显示名取名为Run Unit Test。

        在下面的表格中选择已建立的Command如果没有建立则可以在Commands上新建。

         Run Unit Test Command代码 说明 .execute_command为宏命令用于执行外部的程序。

         .execute_commandcmdargsmode 第一个参数为主命令这里是CMD 第二个参数为主命令的参数这里是/K ANT.BAT JUNIT 第二个参数为管道类型PD提供cmd_ShellExecute和cmd_PipeOutput两种方式。

        前者采用独立的进程方式后者将会阻塞PD直到任务完成并且结果将显示在PD的Output窗口内如图10所示。

         3.结束语 PowerDesigner是一款灵活性非常强的软件建模工具基于它的元模型读者可以随心所欲的用不同语言GTLVBScriptJavaC等来设计出自己的代码生成工具甚至是语言模型、报表等等。

        本篇仅仅起到了一个抛砖引玉的作用我相信凭借着领域中的经验读者一定也可以设计出更适合自己的代码生成工具简化流程、降低成本、加快开发。

         附录 列举了GTL的部分语法读者也可以参阅PD安装目录下的pdvbs11.chm文件或者Sybase官方网站。

         1.资源文件 读者可以参考PD11的现有模型 您可以在安装目录下Resource FilesExtended Model Definitions找到现有的扩展模型在安装目录下VB Scripts找到VBScript代码Ole Automation目录下找到如何用JAVAC等其他语言来获取元模型来做自己的代码生成工具Library目录下找到语言模型。

        在Printable Docs目录下找到PDF文档建议参考Advanced User Documentation.PDF文档。

         2.语法 a.设置变量 变量名必须用来封装即变量名 全局变量 变量区域 简单的说当区域建立后比如循环另一个模版等在区域中调用区域外的变量则需要用Outer.变量名来指明。

         b.循环 c.判断条件 d.集合 e.特殊符号

    原创

    版权说明
    【设为主页】【加入收藏】【打印本文】【回到顶部】【关闭此页】
    •  相关文章 相关文章
      ·最新【精品文档】毕业设计任务书(预算方向
      ·基于工作过程的发动机电控技术课程设计论文
      ·毕业设计
      ·毕业设计__配气机构的设计
      ·毕业设计(论文) 摄影专题网站建设资料
      ·基于工作过程的发动机电控技术课程设计文档
      ·基于工作过程的发动机电控技术课程设计
      ·四川当代艺术设计教育研究
      ·对东莞恒威电子厂员工激励的思考毕业设计(
    •  最新文件 最新文件
  • 特别推荐