I currently think that declarative ta-demarcation at the service-facade in a
typical web-app with hibernate is just plain wrong. Because it pretends to
hide something (the hibernate session and its lifecycle) which it doesn't.
Example from a Spring/Hibernate project I was involved in some time ago: a
developer called two service-methods,  both marked as "requires ta" in
application.xml, in one http request. He thought, they would run in the same
ta, which, of course, they didn't. This was a rather nasty bug.
Since then I have ta control in some point of the web-layer
(DirectService.trigger). This works very well for me. Of course this is also
the approach taken in honeycomb.

See also:
http://marcus-schulte.blogspot.com/2005/04/if-you-cant-hide-it-below-hide-it
.html

> -----Original Message-----
> From: Mark Reynolds [mailto:[EMAIL PROTECTED]
> Sent: Thursday, April 13, 2006 4:51 AM
> To: tapestry-user@jakarta.apache.org
> Subject: Re: tapestry-hibernate integration problem
> 
> 
> The problem I experienced using hivetranse and the "open session in 
> view" was this:
> 
> 1) execute one transactional method, transaction is committed 
> when the 
> method returns and the hibernate session is kept open
> 2) execute another transactional method, hivetranse opens a second 
> hibernate session, transaction is committed when the method 
> returns and 
> the hibernate session is kept open
> 
> Now I have two hibernate sessions for the same request and can easily 
> get hibernate errors regarding the same persistent object 
> being on two 
> different sessions.
> 
> It seems like hivetranse should be able to reuse the same session 
> throughout a single request, as long as it doesn't hit a 
> nested method 
> demarcated as "requires new".
> 
> Has anyone found a solution for this? Or at least seen the same issue?
> 
> -- Mark R
> 
> Nick Faiz wrote:
> > Just a note that you dont need to write code to control the 
> Hibernate 
> > session & transaction lifecycles if you use HiveUtils (aka 
> Hivetranse).
> > 
> > http://sourceforge.net/projects/hivetranse/
> > 
> > In my current project, I configured the hibernate session 
> as a hivemind 
> > component, which is injected into whichever component I 
> like. I also use 
> > the HiveUtils transaction interceptor, which transparently handles 
> > transactions for all components using it, following the 
> 'open session in 
> > view' pattern.
> > 
> > 
> http://hivetranse.sourceforge.net/web/quickstart.html#start.co
> nfig.hibernate 
> > 
> > 
> > Nick
> > 
> > On 12/04/2006, at 10:21 PM, bÄ—gantis debesis wrote:
> > 
> >> Hi everyone,
> >>
> >> I extended a BasePage and added there a getSession method, 
> which opens a
> >> hibernate session and starts a transaction (if it is not 
> yet opened). 
> >> Also,
> >> I commit the transaction and close the session on the overrided
> >> BasePage.detach() method.
> >>
> >> The problem is that when I save something on page 1 and 
> then redirect to
> >> page 2, page 2 gets the old information from the database. That is 
> >> because
> >> detach method on page1 (where the transaction commit 
> resides) is invoked
> >> after page2 getInformation() method called.
> >>
> >> So, the question is, is there a method like detach but 
> which is invoked
> >> before another page starts its activities? Or maybe using 
> transaction per
> >> request is bad at all?
> >>
> >> Or maybe you know some other easy way to intergrate tapestry and 
> >> hibernate?
> >>
> >> Thank you in advance,
> >> Valdemaras
> > 
> > Nick Faiz,
> > Developer
> > www.q9software.com
> > 
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: 
> [EMAIL PROTECTED]
> > 
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to