"Default" refers to a "default domain" within a single configuration instance. You will be working with 2 configuration instances, so both will have a "default domain". This also means that your old code can stay unchanged, while the new application won't be able to use a static method for DataContext creation (either with domain name or without it). Instead you will need to write your own factory method that gets a hold of "conf", gets its default domain, and creates a context from it.

Andrus


On May 3, 2010, at 2:26 PM, Borut Bolčina wrote:

Hello,

Our old large web application uses one database and there are a large number of DataContext.createDataContext(); statements all over the web application
itself and jars it depends on.

Now there is a need to access another database. Currently the Configuration gets initialized with the first call of createDataContext - there is no
special class which initializes cayenne eagerly. All defaults.

Reading the API (
http://cayenne.apache.org/doc30/api/org/apache/cayenne/access/DataContext.html#createDataContext%28%29)
there is a sentence:

"Factory method that creates and returns a new instance of DataContext based
on default domain."

What is the default domain? I can't find anything in the modeler or in the
cayenne xml configuration file to mark one node as default.

Currently the cayenne.xml comes from one of the external jars, not the web
application itself. Now I will have to create a manually crafted
my-cayenne.xml configuration file which has another data node and initialize
it with something like:

DefaultConfiguration conf = new DefaultConfiguration("my- cayenne.xml");

But I suspect I would have to find all occurances of createDataContext() and replace it with createDataContext("old-node-name"). I would really like to
avoid that!

Instead, can I just leave the access code to "old" database as is and only
create data context for the new database with
createDataContext("my-new-node-name")?

-Borut

Reply via email to