RE: Using Cayenne in GWT wthout DTOs

From: Scott Anderson (sanderso..irvana.com)
Date: Mon Sep 22 2008 - 14:24:38 EDT

  • Next message: Chris Murphy: "Trying to go from DataContext to ObjectContext"

    > I just thought maybe there could have been something similar to
    > hibernate4gwt in the hibernate land. Maybe I could work on something.

    I certainly don't want to crush any aspirations to enhance the
    development experience, but I want to make sure that you're not trying
    to reach an unreachable goal. It sounds to me like your goal is to get
    out of having beans. That won't be possible, but you most certainly can
    generate the beans - in fact, if you were to do so, I'd probably use it
    myself for future projects.

    The bottom line is that GWT-RPC won't serialize anything unless it looks
    like a bean. The tricky thing here is that POJOs look like beans; to be
    precise, they store row data in fields that GWT-RPC can serialize.
    CayenneDataObjects don't do this, and therefore can not be directly
    serialized; they need a bean to act as a packet definition. For complete
    details, see http://tinyurl.com/gwtrpc#SerializableTypes -- but don't be
    fooled, while a CDO may be serializable (if a subclass implements
    IsSerializable), GWT-RPC still won't transmit row data; it will simply
    allow you to define the message to be a CDO, but will still expect an
    object which implements IsSerializable, and will only serialize the
    fields defined in the lowest level implementation, not in its super
    classes.

    This behavior is intentional! It is not a flaw in design, or a bug, or
    an oversight, so don't expect it to change in the future.

    You could take the XML mapping file as input for a code generator and
    use that information to generate beans, the two service interfaces, a
    factory to instantiate and initialize the beans from CDOs, and a merger
    to dump the beans received from the client back in to the CDOs. You
    might even be able to generate that code via the Modeler with some
    templates if you're clever.

    Theoretically, you could store the fields of the beans in the CDO
    implementations, emulating that characteristic of POJOs, but I certainly
    wouldn't recommend doing that. It wouldn't solve the problem that data
    needs to be copied back and forth, and it would give the CDOs multiple
    responsibilities, which is a general programming taboo.

    HTH,
    Scott



    This archive was generated by hypermail 2.0.0 : Mon Sep 22 2008 - 14:26:20 EDT