In your business object you will need to know 3 things to map it to a
Cayenne object: entity name, id, state (new or already persistent).
Then you can do something like this (pseudo code of course):
X businessObject = ...;
DataObject cayenneObject;
Class cayenneObjectClass = context.getEntityResolver().
getClassDescriptor(businessObject.getEntityName()).getObjectClass();
if(bObject.isNew()) {
cayenneObject = context.newObject(cayenneObjectClass);
}
else {
cayenneObject = DataObjectUtils.objectForPK(cayenneObjectClass,
businessObject.getId());
}
// merge fields...
Hope I answered the right question.
Andrus
On Jul 22, 2009, at 7:47 AM, sridhar devatha wrote:
> Hi,
>
> I have view layer, business layer and data access layer. Each have
> separate
> class for carrying data. But, in data access layer, the object /
> class used
> for carrying data is respective data objects. I don't send these
> objects
> beyond my data access layer. Rather I create business objects
> populated with
> data object data. When the business functions call data access layer
> for any
> of the CRUD operations, they pass these business objects. I convert
> these
> business objects to data objects(So, I will create data object every
> time I
> need to convert business object to data object. So, what happens
> when the
> two data objects(one dataobject is created while retrieving data. We
> send
> the data as business object to business layer. one data object is
> created
> when the user returns the modified data in the form of business
> object) of
> the same class exist with the same data? How can I modify and delete
> the
> respective rows of these data objects? Please answer any body. I did
> not
> find any example that does the modification.
>
>
> Yours Sincerely,
> Devatha Sridhar
This archive was generated by hypermail 2.0.0 : Wed Jul 22 2009 - 06:16:10 EDT