Yes, use non persistent objects. Those can also be used in a grid. Sometimes it is handy to attach non persistent object to the user session. This way you can still retrieve a non persistent object over the user session later in a process.
So just create the single four objects (and set the reference) you can then use this reference to show all the objects in the grid.
Create another Persistable or non Persistable entity ‘Parent’ , associate your entity ‘ Child’ with the parent . * child – 1 parent. The parent can be the Account entity, the session or associated with it so you can retrieve it when needed.
Now once the user enters a new value , first check if parent object exists, if not create a new one else use the existing one . You will associate your child object with this parent.
On your display page, you will have a dataview having the Parent object , inside it a list view of all associated children.
Another way is to store your objects as Persistent, then either on navigation or at any point that makes sense to you delete them before the user enters new values.
Also, if you want to do stuff client side, use nanoflows as long as you do not have to access the database. This saves your application roundtrips and makes it better responsive. And to extend the functions available at your fingertips: add module nanoflow_commons.