Re: Modification and deletion of data objects

From: Mike Kienenberger (mkienen..mail.com)
Date: Wed Jul 22 2009 - 14:52:25 EDT

  • Next message: Emanuele Maiarelli: "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<evvdra..ahoo.it> 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 services
    > that can help u extracting interfaces from your classes, quickly.
    >
    >
    >
    >
    >
    >
    > ________________________________
    > Da: Mike Kienenberger <mkienen..mail.com>
    > A: use..ayenne.apache.org
    > 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<devatha.sridha..mail.com> 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 <andru..bjectstyle.org>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
    >>
    >
    >
    >
    >



    This archive was generated by hypermail 2.0.0 : Wed Jul 22 2009 - 14:53:19 EDT