cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Gentry <>
Subject Re: lightweight object fetching
Date Thu, 16 Apr 2015 16:30:02 GMT
Hi Ari,

We chose option 2 and created a view with a read-only modeler mapping.
This was especially more useful for us since we had quite a few joins we
were flattening out for putting into an overview table and we kept all that
activity in the database instead of round-trips between our server and the

I was going to mention creating "subset" entities, too, but Jurgen already
suggested that.


On Wed, Apr 15, 2015 at 5:20 AM, Aristedes Maniatis <>

> Cayenne has very nice functionality for paging large lists of objects, so
> that the list is mostly hollow objects which are retrieved in a lazy
> fashion as they are accessed.
> This works well to fetch 100,000 contacts in a list and only draw the ones
> visible to the user as they scroll. What works less well is the common use
> case of a list view where you might only want to show several attributes of
> a large record.
> So a list of contacts might show just:
> * firstName
> * lastName
> * totalSales
> To fetch this data requires a query on contact with a prefetch to
> invoices. Lots of data being loaded from two or more tables and potentially
> a bit slow.
> Some options:
> 1. Use DataRows. This is simple, but you lose some of the nice
> modelling/entity features from Cayenne. You have to type all the columns
> yourself.
> 2. Create a view in the database with just three columns (plus a PK) and
> create a separate read-only Cayenne model which maps to that view. But now
> you are hardcoding your application to a specific database and changing the
> representation is hard.
> I want something half way between the two. SQLtemplate to fetch only the
> columns or aggregates I need, but mapped to some sort of read-only
> lightweight Cayenne entity.
> Has anyone tried something like this?
> Ari
> --
> -------------------------->
> Aristedes Maniatis
> GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message