cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mike Kienenberger <>
Subject Re: Modification and deletion of data objects
Date Wed, 22 Jul 2009 18:52:25 GMT
I wrote templates to generate interfaces as well as concrete classes
for entities.
It's been awhile since I looked at them, so I don't know if they're
suitable for public consumption.

On Wed, Jul 22, 2009 at 2:36 PM, Emanuele Maiarelli<> wrote:
> Hi agree with Mike, unless you have previous designed objects, i'd take DataObjects
> as business objects.
> If u get previous designed objects u could work on the package 'entities' implementing
> methods do adapt DataObjects to your needs. IDEs (at least NetBeans) got refactoring
> that can help u extracting interfaces from your classes, quickly.
> ________________________________
> Da: Mike Kienenberger <>
> A:
> Inviato: Mercoledì 22 luglio 2009, 20:21:32
> Oggetto: Re: Modification and deletion of data objects
> I'm not aware of anyone else using separate objects for the business
> level.  I use the DataObjects as the business level objects.  Yes, if
> you decide to manually recreate data objects from business objects,
> there will be some overhead.  If I had to go that route, I'd create a
> central management class and have it cache what objects I already know
> exist in the data context the first time I reference them rather than
> searching through the data context lists each time.
> One possiblity you could consider is to generate interfaces for your
> DataObjects and then pass the interface rather than the DataObject
> concrete class.  This is what I tend to do in my projects.   That way,
> you can hide all of the Cayenne-specific methods from your other code
> if you want.   Other than some dependencies on Cayenne classes and a
> couple of other methods, there's not a lot of difference between a
> Cayenne data object and a "cayenne-free" business representation of
> the same data.
> On Wed, Jul 22, 2009 at 2:15 PM, sridhar
> devatha<> wrote:
>> andrus, it is not clear(thank for reply though), i have to try over weekend.
>> moreover, i can not use context, getEntityName in business object. I wrote
>> business object to data object conversion in data object class it self. so I
>> can use cayenne java api.  I have to do it in the data object class which is
>> sub class _data object, as it will have reference of business object. But,
>> any way I am just surprised to see that there is no modification example
>> code. Nobody uses cayenne data object from view layer to business/service
>> layer to data access layer in web or enterprise applications(because it is
>> cayenne data object with several other sensitive methods available. even if
>> the methods are not there. I don't want to couple all the layers. ). I don't
>> want to expose that sensitive object. more concrete examples will make it
>> easier for new developers like me.
>> I think what Mike Kienenberger(thanks mike , that is what I am also thinking
>> at least. by the way what do you say about andrus reply) is telling may be
>> correct. then i have to go thru all the new and modified registered objects
>> in the data context to see if there is any thing existing. clearly this kind
>> of searching will make it difficult for every data object updation and
>> deletion. what do you say.
>> On Wed, Jul 22, 2009 at 3:45 PM, Andrus Adamchik <>wrote:
>>> 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
>> --
>> Yours Sincerely,
>> Devatha Sridhar

View raw message