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 wrote:

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

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?


Aristedes Maniatis
GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A

Search Discussions

Discussion Posts


Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 3 of 5 | next ›
Discussion Overview
groupuser @
postedApr 15, '15 at 9:22a
activeApr 16, '15 at 5:35p



site design / logo © 2021 Grokbase