cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: Creating or loading Datamap
Date Fri, 21 Jan 2011 11:24:35 GMT
Hi André,

Yes, if you wish you can create the entire Cayenne stack via API, loading parts of it from
XML files, etc. 

* To load DataMap from XML, use MapLoader:

http://cayenne.apache.org/doc30/api/org/apache/cayenne/map/MapLoader.html

* To create a DataContext, use DataDomain.createDataContext().

* To change loaded DataMap, use DataMap methods to access and manipulate the entities:

http://cayenne.apache.org/doc30/api/org/apache/cayenne/map/DataMap.html

Andrus

On Jan 21, 2011, at 11:26 AM, André Rothe wrote:

> Hello,
> 
> I try to write a short test program, which can use multiple data sources dynamically
with Cayenne. At the moment I have finished the replacement for the driver.xml and cayenne.xml
(I think):
> 
> --------------------------------
> 
> // init a connection
> DataSourceInfo properties = new DataSourceInfo();
> properties.setDataSourceUrl("jdbc:oracle:thin:@test:1521:play");
> properties.setJdbcDriver("oracle.jdbc.OracleDriver");
> properties.setMinConnections(1);
> properties.setMaxConnections(1);
> properties.setUserName("scott");
> properties.setPassword("testme");
> 
> PoolManager pmA = new PoolManager(
>                    properties.getJdbcDriver(),
>                    properties.getDataSourceUrl(),
>                    properties.getMinConnections(),
>                    properties.getMaxConnections(),
>                    properties.getUserName(),
>                    properties.getPassword());
> 
> DataMap map = new DataMap("test_db");
> //??
> 
> DataNode node = new DataNode("dev_db");
> node.addDataMap(map);
> node.setDataSource(pmA);
> 
> DataDomain domainA = new DataDomain();
> domainA.addNode(node);
> domainA.addMap(map);
> 
> // get the context ??
> 
> 
> // init another connection
> properties.setDataSourceUrl("jdbc:oracle:thin:@test:1521:test");
> 
> PoolManager pmB = new PoolManager(
>                    properties.getJdbcDriver(),
>                    properties.getDataSourceUrl(),
>                    properties.getMinConnections(),
>                    properties.getMaxConnections(),
>                    properties.getUserName(),
>                    properties.getPassword());
> 
> map = new DataMap("test_db");
> //??
> 
> node = new DataNode("test_db");
> node.addDataMap(map);
> node.setDataSource(pmB);
> 
> DataDomain domainB = new DataDomain();
> domainB.addNode(node);
> domainB.addMap(map);
> 
> // get the context ??
> 
> 
> ---------------------
> 
> The questions:
> 
> How I can load a predefined data map from a map.xml into my DataMap object without affecting
the already defined objects (node, domain etc.)? Can I define the map dynamically? How I can
create a DataContext for the domains I have?
> 
> I have a lot of different data sources, which are defined by some other parts of the
application. The DataSourceInfo object must be changeable by the user and it can be, that
I get changes on the database structure, so it must be possible to react on them with a new
data-map at runtime.
> 
> Is it possible with Cayenne?
> 
> Tanks
> André
> 


Mime
View raw message