我把这个问题放在了 gae java 的 Google 群组中(http://groups.google.com/group/google-appengine-java/browse_thread/thread/85dc9f10d7e12a3),但有时有人需要一周的时间来回答一个问题并且我觉得我需要更快地知道答案。
建议我们让我们的持久性字段只能通过 setter/getter 访问,并且不允许公共访问,以免绕过 JDO 机制。
我们还建议实现 persistenceCapable 接口。然而,在 gae java 中,我们似乎不需要实现persistenceCapable 接口,而只是适当地放置@PersistenceCapable 注解。
一个 setter/getter 仅仅是
setHello(hello){this.hello = hello;}
getHello{return this.hello;}
在这些线之间没有其他可以绕过的东西。这让我想...
@PersistenceCapable 和所有其他 gae @ 注释是否会修改/增强我的 java 代码,并在编译期间将额外的东西插入到我的 setter/getter 中,如果这些字段由非持久性感知类直接访问,则会被绕过?
此外,@PersistenceCapable 是否会导致 gae sdk 为我们插入“实现 PersistenceCapable”,还是 gae 简单/不一致地不需要我们实现 PersistenceCapable?