On 05/02/2012 10:35 AM, Michael Gentry wrote:
Creating a new DataContext may or may not be the right approach for
your application, but to say it "is not a recommended practice" would
be incorrect. If your requests are naturally isolated from other
requests, there is no harm in creating a new DataContext/request.
I got that quote from the Cayenne Guide
http://cayenne.apache.org/doc30/obtaining-datacontext.html
so that was got me thinking about the whole thread topic and what might
be the recommended practice for a multi-threaded stand-alone app.
DataContexts (parent/child/whatever) are not tied at all to the
connection pool limits. Creating a DataContext is cheap, too. Create
all that you need.
I am beginning to understand this now but in my "extreme" case of 200
simultaneous requests to a DataContext can I simply create 200 new
DataContexts using code like
String fileName = "etc/cayenne.xml";
org.apache.cayenne.conf.FileConfiguration conf = new
org.apache.cayenne.conf.FileConfiguration(fileName);
org.apache.cayenne.conf.Configuration.initializeSharedConfiguration(conf);
DataContext dc = DataContext.createDataContext();
without causing multiple open/close connections to the underlying database?
And where does the underlying connection pool set for lets say 20
maximum connections come in to play? In the code example above, will a
createDataContext() fail at the 21st request?
4) Or am I way off base and making things more complicated than they should
be? ;-)
Probably. :-)
My thanks to the forum monitors for your patience and explanations!!
PS. You keep mentioning child contexts. Do you *need* child contexts?