Java 开发 2.0: NoSQL
2010-07-20 00:00:00 来源:WEB开发网清单 1. 使用 Entity 的对象持久存储
def ticket = new Entity("ticket")
ticket.officer = params.officer
ticket.license = params.plate
ticket.issuseDate = offensedate
ticket.location = params.location
ticket.notes = params.notes
ticket.offense = params.offense
通过对象设计
倾向于对象模型而不是数据库的设计的模式在 Grails 和 Ruby on Rails 这样的现代 Web 应用程序框架中展现出来,这些现代 Web 应用程序框架强调对象模型的设计,并为您处理底层数据库架构创建。
这种对象持久存储方法很有效,但容易看出,如果您频繁使用票据实体 —例如,如果您正在各种 servlet 中创建(或查找)它们,那么这种方法将变得令人厌烦。使用一个公共 servlet(或 Groovlet)来为您处理这些任务将消除其中一些负担。一种更自然的选择 —我将稍后展示 —将是建模一个 Ticket对象。
返回比赛
我不会重复 Gaelyk 简介中的那个票据示例,相反,为保持新鲜感,我将在本文中使用一个赛跑主题,并构建一个应用程序来展示即将讨论的技术。
如图 1 中的 “多对多” 图表所示,一个 Race拥有多个 Runner,一个 Runner可以属于多个 Race。
图 1. 比赛和参赛者
如果我要使用一个关系表结构来设计这个关系,至少需要 3 个表:第 3 表将是链接一个 “多对多” 关系的联接表。所幸我不必局限于关系数据模型。相反,我将使用 Gaelyk(和 Groovy 代码)将这个 “多对多” 关系映射到 Google 针对 Google App Engine 的 Bigtable 抽象。事实上,Gaelyk 允许将 Entity当作 Map,这使得映射过程相当简单。
更多精彩
赞助商链接