技术开发 频道

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

  【IT168技术文档】在上个月开篇的 精通 Grails 文章中,介绍了名为 Grails 的新 Web 框架。Grails 结合了最新的实践,例如模型-视图-控制器的关注点隔离和约定优于配置。通过将这些实践与其中内置的 scaffolding 功能结合,使用 Grails 只需花几分钟就能建立并运行起一个 Web 站点。

  这篇文章的重点是使用 Grails 可以实现简化的另一领域:使用 Grail 对象关系映射(Grails Object Relational Mapping,GORM)API 进行持久化。我将首先介绍什么是对象关系映射器(object-relational mapper,ORM),以及如何创建一对多关系。然后将学习数据验证(确保应用程序不会出现无用信息输入/无用信息输出(garbage in/garbage out)问题)。然后将看到如何使用 Grails ORM 的领域特定语言(domain-specific language,DSL),使用 DSL 语句能够在幕后对普通的旧 Groovy 对象(plain old Groovy objects,POGO)的持久化方式进行微调。最后,将看到能够轻松地切换到另一个关系数据库。任何有 JDBC 驱动程序和 Hibernae 方言的数据库都受支持。

  ORM 定义

  关系数据库出现于 20 世纪 70 年代末,但是软件开发人员至今依然在寻求有效的方法来存入和取出数据。当今软件的基础并不是多数流行数据库所使用的关系理论,而是基于面向对象的原则。

  为此产生了一整套称为 ORM 的程序,用来缓解在数据库和面向对象的代码之间来回转移数据的痛苦。Hibernate、TopLink 和 Java 持久性 API(Java Persistence API,JPA)是处理这一问题的三个流行的 Java API(请参阅 参考资料),不过它们都并不完美。这个问题如此持久(不是故意一语双关,而是实情),以至于有了自己专用的术语对象关系阻抗失谐。

  GORM 是在 Hibernate 上的一层薄薄的 Groovy 层。(我猜 “Gibernate” 不像 “GORM” 那样容易上口)。这意味着现有的所有 Hibernate 技巧仍然有用 — 例如,HBM 映射文件和标注得到全面支持 — 但这篇文章的重点是 GORM 带来的有趣功能。

0
相关文章