I have a question about how to approach a certain kind of problem.  Let me
first explain what I'm doing, and then what the problem is with that.

For the web app I'm creating, a user can, using a web form, edit data which
is backed by a model that fetches the persistent object being  modified.
 When the OK button is clicked, the changes are committed, and then show up
in the database.  So far, so good.

While editing a given record called Issue, the user may choose to edit other
records that it references (AffectedParty, in this case).  To do this, we
switch to the new page without performing any commit.  When the referenced
record is updated, the user returns to the original Issue record.  So far,
nothing has been committed.  All changes will committed when editing is
complete for the Issue record.

The problem occurs when users open multiple tabs to multiple Issues.  In
this case, my persistence framework (Hibernate) is using one session for all
updates, so a commit to one will affect all the others.  This can cause all
kinds of complex problems when the user is editing multiple unrelated
records at the same time.

I would like this application to be able to support working on multiple
records at once.  One place this can be fixed is in the persistence layer,
by associating unrelated records with separate Sessions.  However, this can
get complicated, fast.  Another thing that I might try is to detach the
record from Hibernate at the end of each page being rendered, and reattach
it at the time of update.  Right now, this seems like the most reasonable
solution.

Is there a standard Wicket solution for this problem?  A friend of mine who
uses Seam suggested that I check out whether or not Wicket supports
conversations, a concept with which I'm only partly familiar (they're like
transactions, but can comprise multiple individual transactions...right?).
 So far, it looks to me like Wicket doesn't directly support this concept,
and I'm not even sure how it would help me, anyway.

Any suggestions?

Reply via email to