Hi all,
I know this is a much-asked topic/question, but it would be cool if someone takes the time
to explain a thing or two to me. Don't think I'm lazy; I've been reading up on
this all day, I just need some clarification ;-)
I also hope this is the right forum to ask, since it's pretty much seam-specific, so
please excuse me if it's not.
I have this very well documented scenario: a user clicks something he wants to edit,
changes some things, and sends the changes back to the DB (the "multipage wizard
pattern").
I have the following installed: a stateful session bean that keeps track of the object
that is to be edited, an persistence context, a method that init's the edit-session
and one that writes the changes to the db.
I begin a conversation in the init() method and load the selected object into a variable
of the SSB. The conversation is ended in the update() method.
Now my questions:
0. If I inject (@In) my EntityManager in Seam, it holds an extended persistence context,
right?
1. If I call merge() or not in the update() method, it doesn't make any difference,
the changes are always written to the DB. Why is that?
2. I use seam-validation that checks my data, but when something goes wrong in the
update() method, a rollbackException is thrown, but my changed data is still written to
the DB. How come?
3. If I would like to solve the issue in question #2, if @Begin(flushMode=MANUAL) the only
solution? If you have an answer here, please elaborate regarding @TransactionAttribute and
@Rollback, because this is all but clear to me. For instance, why doesn't my @Rollback
on the update() method work if something goes wrong in that method?
4. Is this solution:
http://docs.jboss.org/ejb3/app-server/tutorial/extended_pc/extended.html the same as
@Begin(flushMode=MANUAL)?
5. Is it normal I can't use <s:convertEntity /> if I use @PersistenceContext
instead of an injected (@In) entity manager?
6. Is there a way to specify flushMode=MANUAL in the <begin-conversation> tag of
pages.xml?
7. A bit of a general question: in my scenario (without the manual flushmode), where are
the transactions started/ended, and where will throwing runtime exceptinos do any rollback
on the changed data?
8. If I would like to post my findings of today in a wiki, what's the best one I can
choose?
I hope I can help others out with my questions too, because this is supposed to be general
knowledge, but it's hard to get your thoughts around these concepts if one comes from
a non-ejb3 environment, directly to seam.
kudos to those who find the time and helpfulness to answer my questions.
b.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4052839#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...