Hi Tim!

The Tapestry+Cayenne apps I worked on weren't open source, but the
combination worked amazingly well for us.

In the largest one, we had a small user base, but the object graph being
edited could be 100s or for a few, over 1000 records [1]. Because the
number of records could take a while to load in from the database and
because our validations had to traverse the entire object graph every time,
we chose to make the app session-based. Didn't have any issues with the
object graph being in session and Tapestry did a great job reading the data
from the Cayenne object graph to edit in the UI and pushing all the data
back to the Cayenne object graph on submit where we could re-validate.

Our save button was essentially dataContext.commitChanges(), with a
try/catch block around it to handle errors. This was a HUGE advantage over
having to micromanage each individual record like you'd do with
Hibernate/JPA -- plus no LazyInitializationExceptions ever.

My memory is a little fuzzy here, but I believe we had custom encoders for
Tapestry to tell it how to identify Cayenne objects, especially when you
were iterating over them. We had a common Cayenne superclass for all of our
objects that implemented this to make it simpler and allow us to re-use a
generic encoder. I believe this identifier (t5id) was simply a dynamic UUID
we'd generate for every Cayenne object when needed. No need to persist it
and it didn't have to be the same ID across sessions as it was only for
Tapestry to identify objects when doing a submit.

mrg

[1] We learned the hard way that Tomcat has a default limit of 10k form
inputs because one of our users was reporting data wasn't saving at the
BOTTOM of the page, but was saving at the TOP. To make it worse, Tomcat
just silently ignores anything after 10k inputs -- no error/exception/etc.
Had to adjust Tomcat to accept an unlimited number of inputs to get their
data saving again.


On Wed, May 12, 2021 at 6:50 AM D Tim Cummings <t...@triptera.com.au.invalid>
wrote:

> Does anyone know of any good open-source Cayenne Tapestry apps that show
> best practice and latest features for using these two frameworks
> together? Most of the Tapestry examples use Hibernate.
>
> Tim
>
>
>
>

Reply via email to