Re: Sending data across the wire.

Michael Gentry <[email protected]>
Newsgroups gmane.comp.java.cayenne.user
Message-ID <CAOy5kzMwAZA7D9JTavALD7=RaR6p0ZjxVs3-QfMqR3vL6WDPRg@mail.gmail.com>
Jackson allows you to define custom un/marshalling mechanisms when needed
so you can control what gets included.

Years ago we had some code which allowed you to include/exclude
properties/paths to build up a JSON object to return
using read[Nested]Property().  Basically you'd explicitly define what you
wanted to include and it would build the JSON for you.  No idea if I still
have that code lying around somewhere, but the idea is fairly simple, I
think.

mrg


On Wed, Sep 18, 2019 at 2:21 AM Andrus Adamchik <[email protected]>
wrote:

> Ignoring serialization mechanics (and even the presence of Cayenne) for a
> moment, I was always wondering how do people even approach this problem.
> Every persistent object is potentially an entry point to a near-infinite
> graph of objects coming from DB. So you need to have a set of clear rules
> of how deep and wide you want to go when you start serializing.
>
> DTO is one way to define such rules. But unless your rules are very simple
> ("send the attributes, don't send the relationships"), if you start
> generating DTOs, they will have the same set of relationships. And you'd
> end up with the same issue as you had with serializing the original
> DataObjects.
>
> So what parts of the graph do you need to serialize?
>
> And if this needs to be flexible, I would probably write a small library
> that allows a user to define a subset of model to serialize, and then
> applies that "submodel" to DataObjects directly (this is the Agrest.io
> approach on a smaller scale). But as with any generic solution, this will
> require a bit of effort, dealing with edge cases, etc.
>
> Andrus
>
>
>
> > On Sep 18, 2019, at 12:29 AM, John Huss <[email protected]> wrote:
> >
> > It's a small effort to create a custom entity template to generate any
> kind
> > of entity class you want, for instance for a DTO. You can copy a lot of
> > stuff right out of the regular templates if you want.
> >
> > Then you can use maven or ant to easily regenerate those classes the same
> > way CayenneModeler does without having to change the custom template
> > selections all the time.
> >
> > On Tue, Sep 17, 2019 at 1:49 PM Tony Giaccone <[email protected]> wrote:
> >
> >> So typically I create a Data Transfer Object to return values across the
> >> wire that I have fetched and copy attributes from my model object to the
> >> DTO.  This gets tedious quickly.  I wondered if there's not another way
> >> that people are doing this, because this seems entirely too painful.
> >>
> >> However, if* this is* what most people do, then perhaps a change could
> be
> >> made to the modeler, that would all you to create automatically a set of
> >> DTO objects with when you generate the model objects.  I recognize that
> >> this would be a rather significant effort and I'm guessing that there's
> >> probably a better way, but I'm not aware of what it is.
> >>
> >> Any suggestions?
> >>
> >>
> >> Tony Giaccone
> >>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.