Hi Kevin,

I should say that Cayenne is uniquely suited for creating persistent stack and 
mapping at runtime, as there's no class enhancement involved. POJO's being 
subclasses of CayenneDataObject, with set/get implemented the way we do them in 
Cayenne is the only hard requirement. From there, as John has mentioned, you 
make some assumptions. The biggest assumption is that you control the DB and 
there's no chance of a legacy schema that you'd have to support (in which case 
you will need to create Cayenne mapping by hand to reconcile column naming and 
type differences between Java and DB). 

Implementation (assuming Cayenne 3.1) may be encapsulated in a custom Cayenne 
DI module. We are still in the process of writing the docs for 3.1, but most DI 
features are well documented in this otherwise empty PDF:

http://people.apache.org/~aadamchik/misc/cayenne-guide-08302011.pdf

In the custom module define DataDomain loading services to reverse-engineer the 
POJOs instead of loading mapping from XML. This is the biggest task, requiring 
some understanding of Cayenne APIs. Feel free to ask here if you get stuck with 
anything. Also map SchemaUpdateStrategy to CreateIfNoSchemaStrategy that will 
create a DB schema based on your mapping.

This should be it at the high level, but of course you'll need to write some 
code here. I used to implement a similar task - going from reverse-engineered 
DB to a runtime mapping of generic Java classes, and that worked pretty well.

Good luck, and let us know how this works - maybe some of these new factories 
that you develop could be of general use to Cayenne users as well as ISIS users.

Andrus 


On Dec 5, 2011, at 8:59 PM, Kevin Meyer - KMZ wrote:

> Hi all,
> 
> Please point me to the previous message if this has already been 
> addressed.. I did a quick search, but couldn't find anything that looked 
> directly relevant.
> 
> Anyway: I have been maintaining the SQL Objectstore (jdbc) for 
> Apache Isis (currently in the incubator), and would like to know if 
> Cayenne can be used completely "in the background", with no user 
> integration (i.e. no need to run the configuration tool / modeller / etc).
> 
> Isis is a complete framework solution for developing and deploying 
> POJO / domain objects, and provides hooks for persistence tasks.
> For example, the metamodel context provide:
>       public ObjectInstantiator getObjectInstantiator();
>       public ObjectDirtier getObjectDirtier();
>       public ObjectPersistor getObjectPersistor();
> 
> where, for example:
> public interface ObjectInstantiator extends Injectable {
>   /**
>     * Provided by the <tt>ObjectFactory</tt> when used by framework.
>     * 
>     * <p>
>     * Called by {@link ObjectSpecificationDefault}.
>     */
>    Object instantiate(Class<?> cls) throws 
> ObjectInstantiationException;
> }
> 
> Isis requires no annotations, etc, to support persistence, which is 
> taken care of via introspection. Some hints can be provided to the 
> objectstore via the "isis.properties" file, if required.
> 
> So, I would like to know how difficult would it be to "just" hook Cayenne 
> into the object "create", "find" and "update" methods of Isis, and let  
> Cayenne take care of the ORM / persistence?
> 
> Taking a quick browse through the examples, I don't see where I 
> configure the database connection, for example.
> 
> Regards,
> Kevin
> 
> 
> 

Reply via email to