WEB开发网
开发学院软件开发Java Java 开发 2.0: NoSQL 阅读

Java 开发 2.0: NoSQL

 2010-07-20 00:00:00 来源:WEB开发网   
核心提示: 当清单 9 中的 getRunners方法调用时,一个 Runner实例集合将从底层的 id集合创建,Java 开发 2.0: NoSQL(10),这样,一个新方法(getEntity)将在 Model类中创建,如果我希望这个关系是双向的,如 图 1中我的对象模型所示,如清单 10 所示:清单

当清单 9 中的 getRunners方法调用时,一个 Runner实例集合将从底层的 id集合创建。这样,一个新方法(getEntity)将在 Model类中创建,如清单 10 所示:

清单 10. 从一个 id 创建一个实体

 def getEntity(entityType, id){ 
 def key = KeyFactory.createKey(entityType, id)   
 return this.@datastore.get(key) 
 } 

getEntity方法使用 Google 的 KeyFactory类来创建底层键,它可以用于查找数据存储中的一个单独实体。

最后,定义一个新的构造函数来接受一个实体类型,如清单 11 所示:

清单 11. 一个新添加的构造函数

 public Model(Entity entity){ 
 this.@entity = entity 
 } 

如清单 9、10和 11、以及 图 1的对象模型所示,我可以将一个 Runner添加到任一 Race,也可以从任一 Race获取一列 Runner实例。在清单 12 中,我在这个等式的 Runner方上创建了一个类似的联系。清单 12 展示了 Runner类的新方法。

清单 12. 参赛者及其比赛

 def addRace(race){ 
 if(this.@entity.races){ 
 this.@entity.races << race.id 
 }else{ 
 this.@entity.races = [race.id] 
 } 
 } 
 
 def getRaces(){ 
 return this.@entity.races.collect { 
 new Race( this.getEntity(Race.class.simpleName, it) ) 
 } 
 } 

这样,我就使用一个无模式数据存储创建了两个域对象。

通过一些参赛者完成这个比赛

此前我所做的是创建一个 Runner实例并将其添加到一个 Race。如果我希望这个关系是双向的,如 图 1中我的对象模型所示,那么我也可以添加一些 Race实例到一些 Runner,如清单 13 所示:

上一页  5 6 7 8 9 10 

Tags:Java 开发 NoSQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接