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