Thank you very much for your feedback Marton  :)
I hope you don't mind, but i will write some further comments to sustain my
cause.

I also would like to hear the opinion of someone from Google. I know you
guys recommend JDO, but can you give me some arguments against using the low
level API, besides portability (i plan to stick to google datastore
services) or code complexity. Why not harness the full power and flexibility
that the datastore has to offer ?!

On Mon, Sep 21, 2009 at 6:35 PM, Marton Papp <[email protected]> wrote:

>
> Hi Corneliu!
>
>
> I also had doubts about using JDO in GAE when I started to work with
> it. Especially because I met several bugs and it was annoying and time
> wasting to figure out what was going wrong. But then the bugs were
> fixed in the next release, so I think the guys are generally doing a
> good job.
>
> About the limitation with the non-existing property, you are right. It
> seems to me that JDO will create a property with a null value once you
> declare and map it. Do you have a real-life scenario where this
> limitation is an issue that you cannot overcome with the features
> provided by JDO? I think if you really need to have some entities
> having some properties, and others not, and still use JDO, then you
> could try to *map different classes to the same database entity*, with
> different properties defined in the classes. I have never tried that
> though, so I am not sure if it would work, and definitely would not be
> convenient.
>

How would i map different classes to the same database entity? They need to
have the same name. What do i do? I put them in different packages? On the
other hand, if i have an older version and a newer version of the same
object (with an extra field let's say) and i want to update a common field
on all objects (both old and new), i can do it with a couple of lines of
code using the low level API.

Again i would like the opinion of someone from Google. Why "hide" this
wonderful feature (dynamic schema - different properties of objects of the
same kind) while using JDO.


> About mapping collections with many entities inside, I think I just
> wouldn't do it. If the collection is too big to be effectively loaded
> into memory, then you are right to be using queries instead. In this
> case you should not map it as a collection, but handle the parent-
> child relationship explicitly. But still, collection mapping can be a
> convenient option if you have only a small number of entities in your
> collection. This does not make JDO less flexible, on the contrary, it
> introduces an extra service.
>



>
> Your idea about processing just part of the results at once in a query
> seems to be okay. I think a similar approach is described to handle
> pagination of large result sets somewhere in the forums.
>
> As for me, I would not recommend you to create your own data access
> layer using the low level API unless you really need it or you really
> do not need any of the features that JDO provides. It still provides
> some convenient features that you would have to live without or
> reimplement if you decide not to use JDO (starting with mapping java
> classes to persistent storage, which I think is a good thing). Most of
> the problems you mentioned are not solved by using the low level API
> anyway, so if you want to create some classes that make data access
> easier for you applications then you can build them on top of JDO as
> well, without any major drawbacks.
>
> And as final reason why to use JDO, these guys who wrote the docs
> recommended to do so, and they must have some reason to say that. :)
>
> Marton
> >
>

-- 
Corneliu Paul Lupulet

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to