快速业务通道

精通Grails: GORM - 有趣的名称,严肃的技术 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
节,了解如何在每个类、每 个字段的基础上创建自定义消息)。

清单 8 中的多数约束只影响视图层,但是有两个约束也会影响持久层。例如,数据库中的 name 列现 在是 100 个字符长。notes 字段除了从输入字段转为视图的文本区域之外(对于大于 255 个字符的字段 会进行这个转换),还从 VARCHAR 列转为 TEXT、CLOB 或 BLOB 列。这些转变取决于在后台使用的数据 库类型和它的 Hibernate 方言 — 当然,这些也是可以修改的。

精通Grails: GORM - 有趣的名称,严肃的技术(6)

时间:2011-07-25 IBM Scott Davis

Grails ORM 的 DSL

可以使用任何常用的配置方法覆盖 Hibernate 的默认设置:HBM 映射文件或者标注。但是 Grails 提 供了第三种方式,这种方式采用了裸对象的形式。只要向 POJO 添加一个 static mapping 块,就能覆盖 默认的表和字段名称,如清单 9 所示:

清单 9. 使用 GORM DSL

class Airline {   static mapping = {    table ''some_other_table_name''    columns {     name column:''airline_name''     url column:''link''     frequentFlyer column:''ff_id''    }   }   static constraints = {    name(blank:false, maxSize:100)    url(url:true)    frequentFlyer(blank:true)    notes(maxSize:1500)    }   static hasMany = [trip:Trip]   String name   String url   String frequentFlyer   String notes   String toString(){    return name   } }

如果要在新的 Grails 应用程序中使用现有的遗留表,那么这个映射块会特别有帮助。虽然这里只介 绍了点皮毛,但 ORM DSL 提供的功能远不止是重新映射表和字段的名称。每个列的默认数据类型都可以 覆盖。可以调整主键的生成策略,甚至指定复合主键。可以修改 Hibernate 的缓存设置,调整外键关联 使用的字段,等等。

要记住的要点是所有这些设置都集中在一个地方:POGO 内。

理解 DataSource.groovy

目前所做的工作都集中在单个类的调整上。下面我们要回过头来做一些全局性的修改。所有域类共享 的特定于数据库的配置保存在一个公共文件内:grails-app/conf/DataSource.groovy,如清单 10 所示 。请将这个文件放在一个文本编辑器内仔细查看:

清单 10. DataSource.groovy

dataSource {   pooled = false   driverClassName = "org.hsqldb.jdbcDriver"   username = "sa"   password = "" } hibernate {   cache.use_second_level_cache=true   cache.use_query_cache=true   cache.provider_class=''org.hibernate.cache.EhCacheProvider'' } // environment specific settings environments {   development {    dataSource {     dbCreate = "create-drop" // one of ''create'', ''create-drop'',''update''     url = "jdbc:hsqldb:mem:devDB"    }   }   test {    dataSource {     dbCreate = "update"     url = "jdbc:hsqldb:mem:testDb"    }   }   production {    dataSource {     dbCreate = "update"     url = "jdbc:hsqldb:file:prodDb;shutdown=true"    }   } }

精通Grails: GORM - 有趣的名称,严肃的技术(7)

时间:2011-07-25 IBM Scott Davis

在 dataSource 块内能够修改用来连接数据库的 driverClassName、username 和 password。 hibernate 块用来调整缓存设置(除非是 Hibernate 专家,否则不要在这里进行任何调整)。真正有意 思的是 environments 块。

还记得在上一期的文章中介绍过 Grails 能够在三种模式下

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