cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aristedes Maniatis <>
Subject partially hollow objects
Date Fri, 15 Feb 2013 02:21:42 GMT
In our Cayenne ROP application we have some tables with very large BLOB fields. We want to
be able to fetch the remaining columns to the client, without the BLOBs. I am after some ideas
on how to best approach this:

1. Create two tables and two Cayenne Java entities to match

Cons: makes the code and database messy since we are dealing with one-to-one relationships
where there isn't really any logical relation

2. Create one database table and use single-table inheritance: the superclass (say 'Painting')
has all the fields and the subclass ('PaintingInfo') only the lightweight fields

Cons: the code is still messy since casting a PaintingInfo to Painting (should you want to
view the BLOB) isn't really possible. You would have to get the PK and then perform another
full fetch on the parent. And I'd be concerned about having two objects in memory at the same
time which point to the same data, but aren't synchronised to each other.

3. Devise some mechanism for Cayenne to have not just hollow objects (like what happens with
paged queries) but hollow attributes. Then we only lazily fetch the attribute data when it
is needed (if at all). This could be ROP specific (that is, the BLOB attributes are fully
fetched from the database but not sent to the client until needed) or perhaps this approach
would also be useful in a non-ROP environment for lazily loading columns.

Any thoughts from people who have run into similar issues? I'd like to avoid DataRows and
all that since that just makes the code really messy again.


Aristedes Maniatis
Level 1, 30 Wilson Street Newtown 2042 Australia
phone +61 2 9550 5001   fax +61 2 9550 4001
GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A

View raw message