快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

精通Grails: Grails与遗留数据库

时间:2011-07-29 IBM Scott Davis

Grails 对象关系映射(Grails Object Relational Mapping,GORM)API 是 Grails Web 框架的核心 部分之一。“精通 Grails:GORM - 有趣的名称,严肃的技术” 向您介绍了 GORM 的基础知识,包括简 单的一对多关系。之后的 “使用 Ajax 实现多对多关系” 教您使用 GORM 建模越来越复杂的类关系。现 在您将看到 GORM 的 “ORM” 如何能够灵活处理遗留数据库中不符合 Grails 标准命名约定的表名与列 名。

备份并恢复数据

无论什么时候处理数据库中的现有数据,都要有一份最新的备份。著名的墨菲法则(Murphy''s Law ) 的墨菲(Murphy)就像是我的守护神。什么样的错误都有可能发生,所以还是未雨绸缪的好。

备份

除了用常规备份软件备份目标数据库外,我还建议再保存一份数据的纯文本副本。这样就能够用相同 的数据集轻松地创建测试和开发数据库了,还可以轻松地跨数据库服务器移动数据(例如,在 MySQL 和 DB2 之间来回移动数据)。

您将再一次使用本系列一直开发的 Trip Planner 应用程序。清单 1 是一个名为 backupAirports.groovy 的 Groovy 脚本,它备份了 airport 表的记录。它用了三条语句、不足 20 行 的代码连接到了数据库,从表中选定了每一行,并将数据作为 XML 导出。

清单 1. backupAirports.groovy

sql = groovy.sql.Sql.newInstance(    "jdbc:mysql://localhost/trip?autoReconnect=true",    "grails",    "server",    "com.mysql.jdbc.Driver") x = new groovy.xml.MarkupBuilder() x.airports{   sql.eachRow("select * from airport order by id"){ row ->    airport(id:row.id){     version(row.version)     name(row.name)     city(row.city)     state(row.state)     country(row.country)     iata(row.iata)     lat(row.lat)     lng(row.lng)    }   } }

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

时间:2011-07-29 IBM Scott Davis

清单 1 中的第一条语句创建了一个新的 groovy.sql.Sql 对象。这是一个标准 JDBC 类集的瘦 Groovy facade,包括 Connection、Statement 和 ResultSet。您可能已经认出了 newInstance 工厂方 法的四个参数了:JDBC 连接字符串、用户名、密码以及 JDBC 驱动程序(在 grails- app/conf/DataSource.groovy 中也可以找到相同值)。

下一条语句创建了 groovy.xml.MarkupBuilder。该类允许您动态创建 XML 文档。

最后一条语句(以 x.airports 开头)创建了 XML 树。XML 文档的根元素为 airports。它还为数据 库的每一行创建了一个 airport 元素,该元素带有 id 属性。嵌套于 airport 元素的元素有 version、 name 和 city 元素。

清单 2 展示了由此得到的 XML:

清单 2. 来自备份脚本的 XML 输出

<airports>   <airport id=''1''>    <version>2</version>    <name>Denver International Airport</name>    <city>Denver</city>    <state>CO</state>    <country>US</country>    <iata>den</iata>    <lat>39.8583188</lat>    <lng>-104.6674674</lng>   </airport>   <airport id=''2''>...</airport>   <airport id=''3''>...</airport> </airports>

在备份脚本中,一定要按照主键顺序拖出记录。当恢复这个数据时,一定要按相同的顺序插入值,以

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号