Hi,
  I have a question on detachment ... I have my PM in a DAO and I open and
close pre / post query. The problem was that the objects returned are null
once the PM was closed unless I set them to be detachable.

Is there an alternative instead of detach in this case? Should I:

1. make DTO of the returned objects (similar to what would happen in
detachable anyway I guess?)
2. design the layers such that the PM is closed at the end of the request
once the reponse has been formed using the data from the objects that were
queried.

thanks ...

cowper

On Wed, Feb 10, 2010 at 1:46 PM, Ikai L (Google) <[email protected]> wrote:

> This is really up to you, though I would avoid detaching unless absolutely
> necessary. Opening and closing a PersistenceManager should be extremely
> cheap (it's instantiating a PersistenceManagerFactory that's expensive).
> You've got a few options here, and what you do really just depends on what
> makes sense for you:
>
> - dependency inject the PersistenceManager into a DAO class that you
> instantiate and pass that instance around, closing it when you are complete
> - open and close each time in the DAO - the problem here is if you need a
> PersistenceManager that spans DAO objects (either build that into a method
> or a Service layer, though for the record I have an aversion to additional,
> unnecessary layers that do a single thing)
>
> From a performance perspective, we aren't doing anything. If you take a
> look at the low-level API documentation, there's no concept of "close":
>
>
> http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/package-summary.html
>
> On Wed, Feb 10, 2010 at 8:26 AM, hsjawanda <[email protected]> wrote:
>
>> Nobody knows the answer to this?
>>
>> On Feb 7, 2:34 pm, hsjawanda <[email protected]> wrote:
>> > Should the PersistenceManager be closed after every query?
>> >
>> > I have a utility class that handles querying the datastore. This class
>> > then returns results which are used by JSP pages to show output.
>> >
>> > AFAIK, these are my options:
>> >
>> > * Make all my data objects detachable (what is the extra cost of doing
>> > this? Don't they have to be copied when detaching?
>> > )
>> > * Make a second call on the utility class to close the PM (defeats the
>> > purpose of having the utility class)
>> >
>> > * Leave my PM unclosed (what is/are the implications of this?)
>> >
>> > I am referring to a case where I am only doing reads from the data
>> > store.
>> >
>> > Regards,
>> > Harshdeep
>>
>> --
>> 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]<google-appengine-java%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/google-appengine-java?hl=en.
>>
>>
>
>
> --
> Ikai Lan
> Developer Programs Engineer, Google App Engine
> http://googleappengine.blogspot.com | http://twitter.com/app_engine
>
> --
> 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]<google-appengine-java%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>

-- 
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