I placed this question in Google groups for gae java (http://groups.google.com/group/google-appengine-java/browse%5Fthread/thread/85dc9f10d7e12a3), but sometimes it takes a week for someone to bother answering a question and I feel I need to know the answer much quicker.
We are advised to have our persistent fields accessible only thro setter/getter and not to allow public access, lest the JDO mechanism is bypassed.
We are also advised to implement persistenceCapable interface. However, in gae java, we don't seem to require to implement persistenceCapable interface, but merely place @PersistenceCapable annotation appropriately.
A setter/getter is merely
setHello(hello){this.hello = hello;}
getHello{return this.hello;}
There is nothing else in between those lines that could be bypassed. That set me thinking ...
Does @PersistenceCapable and all the other gae @ annotations modify/ enhance my java code and insert extra stuffs into my setters/getters during compilation which would be bypassed if those fields were accessed directly by non-persistence aware classes?
Also, does @PersistenceCapable cause gae sdk to insert "implements PersistenceCapable" for us or is it the case that gae simply/ inconsistently does not require us to implement PersistenceCapable?