Mark,

As James suggested (for another project supporting Hibernate in HiveMind),
what you can do (also in hivetranse!) is to create a filter that could call
the hivetranse TransactionService to explicitely start/commit/rollback the
transaction, in this case you don't need to use the hivetranse
TransactionInterceptor anymore (hence the declarative transaction
demarcation).

However, I have to say that I would not use this way for my own apps, I
prefer to stick with the transaction demarcation at the façade level.

Cheers

Jean-Francois

-----Original Message-----
From: news [mailto:[EMAIL PROTECTED] On Behalf Of Mark Reynolds
Sent: Thursday, April 13, 2006 9: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.config.hibernate

> 
> 
> Nick
> 
> On 12/04/2006, at 10:21 PM, begantis 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