快速业务通道

精通Grails: Grails与遗留数据库 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
)。最后,columns 块将 Grails 名称映射到数据库名称。

注意,使用了这个映射技术,表中的某些特定的字段是可以忽略的。在这种情况下,feature 与 county 列未表示在域类中。要想让未储存于表中的字段存在于域类中,可以添加静态 transients 行。 该行看起来与一对多关系中使用的 belongsTo 变量类似。例如,如果 Airport 类中有两个字段不需要储 存到表中,代码会是这样的:

static transients = ["tempField1", "tempField2"]

此处示范的 mapping 块仅仅涉及到此技术可以实现的皮毛而已。

设置遗留表为只读

输入 grails generate-all AirportMapping,创建 控制器和 GSP 视图。由于此表实质上是一个查找 表,所以请进入 grails-app/controllers/AirportMappingController.groovy,只留下 list 和 show 闭包。移除 delete、edit、update、create 以及 save(不要忘记从 allowedMethods 变量中移除 delete、edit 和 save。可以完全移除整个行,或者只留下方括号空集)。

要使该视图为只读,还需要做几个快捷的更改。首先,从 grails- app/views/airportMapping/list.gsp 顶端移除 New AirportMapping 链接。然后对 grails- app/views/airportMapping/show.gsp 做相同操作。最后,从 show.gsp 底部移除 edit 和 delete 按钮 。

输入 grails run-app,验证 mapping 块可以运行。请看一下图 1 中展示的页面:

图 1. 验证 mapping 块可以运行

精通Grails: Grails与遗留数据库(8)

时间:2011-07-29 IBM Scott Davis

结合使用遗留 Java 类与 Hibernate 映射文件

了解了 mapping 块后,让我们再深入一步。不难想象如果拥有了遗留表,就有可能也拥有了遗留 Java 类。如果您想将现有 Java 代码与现有表中的数据融合,可以使用接下来的两个映射技术。

在 Java 1.5 引入注释之前,Hibernate 用户需要创建名为 HBM 文件的 XML 映射文件。回忆一下, GORM 是一个优于 Hibernate 的瘦 Groovy facade,因此,那些古老的 Hibernate 技巧仍然奏效也不足 为奇。

首先,将遗留 Java 源文件复制到 src/java。如果使用包的话,要为每一个包名创建一个目录。例如 ,清单 9 中所示的 AirportHbm.java 文件位于 org.davisworld.trip 包中。这意味着该文件的完整路 径应该是 src/java/org/davisworld/trip/AirportHbm.java。

清单 9. AirportHbm.java

package org.davisworld.trip; public class AirportHbm {   private long id;   private String name;   private String iata;   private String state;   private String lat;   private String lng;   public long getId() {    return id;   }   public void setId(long id) {    this.id = id;   }   // all of the other getters/setters go here }

Java 文件一旦就位,就可以挨着它创建一个清单 10 中所示的名为 AirportHbmConstraints.groovy 的 “影子” 文件了。该文件中可以放置本应该位于域类中的静态 constraints 块。切记该文件一定要 与 Java 类位于相同的包中。

清单 10. AirportHbmConstraints.groovy

package org.davisworld.trip static constraints = {   name()   iata(maxSize:3)   state(maxSize:2)   lat()   lng() }

src 目录下的文件会在运行应用程序或者创建要部署的 WAR 文件时编译。如果已经编译了 Java 代码 的话,也可以仅将它压缩为 JAR 文件并将其置于 lib 目录中。

接下来,让我们来建立控制器。按照约定优于配置的规定,控制器应该命名为 AirportHbmController.groovy。由于 Java 类位于一个包中,因此可以将控制器置于同一包中,或是在 文件顶部

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号