GAE中的数据访问

时间:2012-04-06 06:25:54

标签: java google-app-engine google-cloud-datastore

我试图在GAE中编写小应用程序。我使用Java和本机DatastoreService来处理数据(Objectify是一种可能性,但它没有太大变化)。

我很难弄清楚如何保持面向对象的设计并以交易方式有效地使用数据存储。

我试图建立一个游戏,所以我每个人都有房间,怪物,玩家等等。当玩家执行移动或攻击等操作时,我必须加载一些数据,修改它并将其全部存储在一个tx中,这样就不会出现任何异常。

我应该在调用层次结构中一直传递DatastoreService实例,还是最好只在每个类上获取DatastoreService? 因为数据存储区在我启动事务后确保了一致的视图,并在我得到一个实体时因为我仍然在tx中而得到null,所以我该如何处理?

谢谢你, IDO。

1 个答案:

答案 0 :(得分:1)

首先,我认为您应该仔细查看Objectify,它会使事务和嵌入对象(例如)变得更加容易。

其次,我会认真考虑使用像Guice这样的依赖注入框架来获取Objectify对象(或DatastoreService对象) - 它会让你的代码最终变得更加清晰,并教你一个有用的技能未来。

如果您不使用依赖注入,或者即使您这样做,也可能最好将您的代码控制到与数据本身不同的类中。虽然这并不总是最好的策略,但我认为通常是这样。例如,如果你发现自己想要同时更新和保存怪物和玩家,你会把代码放在怪物或玩家中?我有时会发现使用单独的数据访问对象来执行此类操作最简单,或者如果只是一点点工作,请在Servlet中执行此操作。

Objectify示例应用程序可能对这些位有所帮助 - 它使用Guice,但不使用DAO。