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 19:18:53 GMT
No, but here's the two templates that are most relevent.   This is
probably against Cayenne 1.2 (2.0 with different package names).

If they're helpful, great!  If not, sorry, it's as-is at the moment --
it's really not that difficult to come up with your own.  I might have
more up-to-date versions, but that's what's in front of me at the

On Wed, Jul 22, 2009 at 2:58 PM, Emanuele Maiarelli<> wrote:
> Did u made em public accessible? (sourceforge or kinda)
> ________________________________
> Da: Mike Kienenberger <>
> A:
> Inviato: Mercoledì 22 luglio 2009, 20:52:25
> Oggetto: Re: Modification and deletion of data objects
> 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
>>>> 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
>>>>> 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
>>>>> I
>>>>> need to convert business object to data object. So, what happens when
>>>>> two data objects(one dataobject is created while retrieving data. We
>>>>> 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
>>>>> respective rows of these data objects? Please answer any body. I did
>>>>> find any example that does the modification.
>>>>> Yours Sincerely,
>>>>> Devatha Sridhar
>>> --
>>> Yours Sincerely,
>>> Devatha Sridhar

View raw message