Hi Alexey,

I'm trying exactly that.

final DbAttribute attr = new DbAttribute("id");
attr.setType(Types.INTEGER);
attr.setPrimaryKey(true);
attr.setMandatory(true);

final DbEntity entity = new DbEntity("TEST");
entity.addAttribute(attr);

final DataMap map = new DataMap("AppMap");
map.addDbEntity(entity);

final DataDomain domain = new DataDomain("App");
domain.addMap(map);

final DataNode node = new DataNode("AppNode");
node.setDataSourceLocation("dbcp.properties");
node.setDataSourceFactory(org.apache.cayenne.conf.DBCPDataSourceFactory.class.getName());
node.setSchemaUpdateStrategy(new 
org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy());
node.addDataMap(map);
node.setDataSource(new 
org.apache.cayenne.conf.DBCPDataSourceFactory().getDataSource(node.getDataSourceLocation()));
node.setAdapter(new MySQLAdapter());
domain.addNode(node);

final Configuration c = Configuration.getSharedConfiguration();
c.addDomain(domain);

final ObjectContext context = DataContext.createDataContext("App");

In this implementation I need to figure out how to "inject" the DataSource into 
the Node in a more "clean" way, in this example it is, at least, weird.

As the line Configuration.getSharedConfiguration() will instantiate a 
DefaultConfiguration class, this implementation will look for a cayenne.xml, so 
you need this file "empty":
<?xml version="1.0" encoding="utf-8"?>
<domains project-version="3.0.0.1">
</domains>


My next step is to implement a DynamicConfiguration to allow a initialization 
without any configuration file.

Currently my example is not ideal, but it's a kick-off.

By the way, I'm using DBCP as connection pool.

Regards, 

--
Att.

Tercio Gaudencio Filho


On Monday, November 14, 2011 at 7:28 AM, Alexey Shakov wrote:

> Hi *,
> 
> I would like to know, how to configure Cayenne and map generic object 
> programmatically from scratch without using of XML?
> 
> Most likely, I need to define a DataSource (Factory), create DataDomain, 
> some DataMaps, containing my generic Entities, etc.
> 
> Are there some examples, how to do this using last Cayenne milestone 
> release?
> 
> Many thanks in advance for any help!
> 
> Greetings,
> 
> Alexey 

Reply via email to