cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Florin T.PATRASCU" <>
Subject Re: Best practices for using Cayenne's ObjectContext in a web framework?
Date Sun, 23 Sep 2007 18:38:11 GMT
Hi Andrus,

Thank you for reply. Following your advice and Malcolm's -the author  
of the CLICK web framework-, I (almost :) got a prototype working.

I am configuring my module like this:

     <!--JPublish Cayenne support -->
     <module classname="org.jpublish.module.cayenne.JPCayenneModule">
          ~ Http request paths using a per-request or a per-session  
Cayenne ObjectContext (OC),
          ~ the read-only paths will be interpreted first and will  
use a global OC one defined
          ~ per web app instance.
          ~ -->
             <url path="/info/*" readonly="true"/>
             <url path="/status/*" readonly="true"/>
             <url path="/rss/*" readonly="true"/>
             <url path="/users/*" readonly="false"/>
             <url path="/companies/*"/> <!--readonly="false" by  
default, if not defined-->


, where the module executes Before and After Actions for a request  
following the request path rules above. Though I am not sure I have  
to do anything for the OC, after a request was executed?!

And since I am not using a Filter nor an additional Servlet (so the  
user can control the Cayenne behavior from the JPublish configuration  
file only), I can disable/enable the use/creation of the HttpSession,  
and when the session is disabled an "OC per request" will be created,  
otherwise I'll use the HttpSession as some of the web frameworks I  
was looking at are already doing it.

For the read-only requests I will use an "OC per app" as you  

Even though I am very new to Cayenne I can say already that I like  
Cayenne :)

Many thanks for support,

On 23-Sep-07, at 13:41 , Andrus Adamchik wrote:

>>  I generally use a new DataContext per thread, with a Filter  
>> binding the DataContext to request thread.
> I think at some point we should update the docs for 3.0 with  
> information discussing 3 main patterns with all drawbacks and  
> benefits. Here is a short summary:
> * OC per request
>   - no synchronization issues, smallest memory footprint
>   - some overhead in creating a new DataContext on every request
>   - no "local" caching (can be good or bad depending on the app)
>   - no uncommitted state is allowed between requests
> * OC per session:
>   - Potential synchronization issues on update (if the same user  
> clicks too fast). Possible solution - nested DataContexts per  
> request  working off of a single session context. Another solution  
> is synchronization of action methods.
>   - efficient local cache
>   - uncommitted state can be preserved between requests
>  OC per app
>   - applicable for read-only applications (no special  
> synchronization required in this case)
>   - very efficient local cache
> Andrus
> On Sep 23, 2007, at 2:09 PM, Malcolm Edgar wrote:
>> Hi Florin,
>> I generally use a new DataContext per thread, with a Filter  
>> binding the DataContext to request thread.  Please see the  
>> attached example.
>> regards Malcolm Edgar
>> On 9/23/07, Florin T.PATRASCU <> wrote:  
>> Hi there,
>> I am trying to add Cayenne support to the JPublish web framework
>> ( and being very new to Cayenne I
>> would like, if possible, to find which is the best practice for
>> obtaining and using the OC?
>> I browsed the threads here and most of the information I have show
>> that one of the most common solution is to use the HttpSession.
>> That's clear and I can do that very easy, but I wonder if there is a
>> better way because I would like to use Cayenne for session-less
>> requests as well. So, would it be prohibitive to create an OC for
>> every HttpRequest? aka:
>> ObjectContext oc = DataContext.createDataContext();
>> If not, would this pattern affect the server stability (memory,
>> handlers, threads, db pools, etc.)? What about having a global OC
>> instance per application?
>> Also, is it safe to start developing on top of the Cayenne 3.x  
>> version?
>> Being my first post on this forum, I would like to thank Cayenne's
>> creators for making it available and to you, the users, for the
>> useful information accumulated in this forum during the time.
>> Thank you,
>> -florin

View raw message